Паскаль. Строковые переменные. Диалог с компьютером

Паскаль. Строковые переменные. Диалог с компьютером

Строковые переменные

Сравним две программы:

Var a: Integer;
Begin
  a:=98;
  WriteLn(a);
End.
Var a: String;
Begin
  a:='Привет всем!';
  WriteLn(a);
End.

В первой программе описание Var a: Integer говорит о том, что переменная a обязана иметь числовое значение, а оператор a:=98 записывает в ячейку a число 98.

Во второй программе описание Var a: String говорит о том, что переменная a обязана иметь строковое (текстовое) значение, то есть её значением будет не число, а произвольная цепочка символов, например, «Привет всем!» или «pnH2H(*fD6:uf». Оператор a: = 'Привет всем!' записывает в ячейку a строку «Привет всем!». Оператор WriteLn(a), поскольку он обязан всегда выводить на экран содержимое ячейки a, выведет на экран текст «Привет всем!».

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

Слово String читается «стринг», переводится «СТРОКА».

Информация в ячейке памяти под строковую переменную может в процессе выполнения программы меняться точно также, как и в ячейке для числовой переменной. Например, при выполнении фрагмента -

a:='Минуточку!'; 
WriteLn(a); 
a:='Здравствуйте!'; 
a:='До свидания!'; 
WriteLn(a);

в ячейке a будут по очереди появляться строки -

ПеременнаяЗначение
aМинуточку!
aЗдравствуйте!
aДо свидания!

а на экран будут выведены строки -

Минуточку!
До свидания!

Строковую переменную можно задавать не только оператором присваивания, но и оператором ReadLn. Пример:

Var a: String;
Begin
  WriteLn('Введите какое-нибудь слово');
  ReadLn(a);
  WriteLn('Вы ввели слово - ', a);
End.

Во время паузы, вызванной оператором ReadLn, вы должны ввести какой-нибудь набор символов, например «Зима», и затем нажать клавишу «Enter» в знак того, что ввод закончен. В результате на экране будет напечатан текст:

Вы ввели слово - Зима.
Ещё раз об интерфейсе пользователя

В большинстве сред программирования при запуске программы появляется чёрный экран, аналог окна вывода PascalABC.NET. На нём нам подсвечивают, где сейчас находится курсор. Как выглядит запущенная программа на Turbo Pascal:

Паскаль. Операторы ввода. Интерфейс пользователя Turbo Pascal. Курсор

Исполним просьбу программы и введём слово. Что печатаем на клавиатуре появляется на экране с места, где раньше находился курсор.

Паскаль. Операторы ввода. Интерфейс пользователя Turbo Pascal. 60

Закончив ввод, нажимаем клавишу «Enter». Наблюдаем результат работы программы.

Паскаль. Операторы ввода. Интерфейс пользователя Turbo Pascal. 420

Выполнив программу до конца, среда программирования закрывает окно вывода (чёрный экран). Это не совсем удобно. Если добавить перед служебным словом End пустой оператор ReadLn, то программа будет замирать в конце выполнения, пока не нажмём клавишу «Enter».

Поговорим о среде программирования PascalABC.NET

PascalABC.NET позволяет видеть код программы и окно вывода ОДНОВРЕМЕННО. А чтобы ввести данные с клавиатуры, нужно использовать форму ввода.

Перепишем и запустим ту же программу в PascalABC.NET.

Паскаль. Операторы ввода. Интерфейс пользователя PascalABC.NET. Курсор

Появилась специальная форма для ввода. Туда и напечатаем наше слово и нажмём кнопку «Ввести».

Паскаль. Операторы ввода. Интерфейс пользователя PascalABC.NET. 60

Что написали в форму ввода, то дополнительно появится на экране, а уже потом программа продолжит своё выполнение.

Всё, что мы вводим с клавиатуры в PascalABC.NET отображается в окне вывода.

Запомните
Диалог с компьютером

Напишем программу, которая осуществляла бы такой диалог человека с компьютером:

КОМПЬЮТЕР ВЫВОДИТ НА ЭКРАН:Здравствуй, я компьютер, а тебя как зовут?
ЧЕЛОВЕК ВВОДИТ С КЛАВИАТУРЫ:Коля
КОМПЬЮТЕР ВЫВОДИТ НА ЭКРАН:Очень приятно, Коля. Сколько тебе лет?
ЧЕЛОВЕК ВВОДИТ С КЛАВИАТУРЫ:16
КОМПЬЮТЕР ВЫВОДИТ НА ЭКРАН:Ого! Целых 16 лет! Ты уже совсем взрослый!

Вот программа:

Var imya:String; 
    vozrast:Integer;
Begin
  WriteLn('Здравствуй, я компьютер, а тебя как зовут?');
  ReadLn(imya);
  WriteLn('Очень приятно, ',imya, '. Сколько тебе лет?'); 
  ReadLn(vozrast);
  WriteLn('Ого! Целых ' ,vozrast, ' лет! Ты уже совсем взрослый!');
End.

Диалог будет отличаться только той информацией, которую вводит человек. Так, в другой раз по этой же программе будет осуществлен следующий диалог:

КОМПЬЮТЕР:Здравствуй, я компьютер, а тебя как зовут?
ЧЕЛОВЕК:Фантомас!
КОМПЬЮТЕР:Очень приятно, Фантомас!. Сколько тебе лет?
ЧЕЛОВЕК:100
КОМПЬЮТЕР:Ого! Целых 100 лет! Ты уже совсем взрослый!

Не подумайте, что эта программа очень умная. Она совершенно не анализирует, какую информацию человек ввел с клавиатуры. Поэтому с ней возможен и такой диалог:

КОМПЬЮТЕР:Здравствуй, я компьютер, а тебя как зовут?
ЧЕЛОВЕК:Сгинь с моих глаз!
КОМПЬЮТЕР:Очень приятно, Сгинь с моих глаз!. Сколько тебе лет?
ЧЕЛОВЕК:-2
КОМПЬЮТЕР:Ого! Целых -2 лет! Ты уже совсем взрослый!

Задание 1

Напишите программу для следующей задачи:

Компьютер спрашивает названия двух планет, радиусы их орбит (в миллионах километров) и скорости движения по орбите (в миллионах километров в сутки). Компьютер вычисляет продолжительность года на планетах и выдает результат в таком виде:

Продолжительность года на планете Земля - 365 суток, а на планете Эоэлла - 12 суток.

Турбо-Паскаль 7.0 - Самоучитель
Лукин С.Н.