Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi / песни о паскале.pdf
Скачиваний:
63
Добавлен:
26.03.2016
Размер:
5.16 Mб
Скачать

Глава 9 Переменные: продолжение знакомства

Теперь, после знакомства с переменными, вы умеете объявлять их, вводить в

переменные данные и печатать. Отныне мы не расстанемся с ними.

Представьтесь, пожалуйста!

Наша следующая программа P_09_1 спросит у пользователя имя и фамилию, после чего обратится к нему уважительно, как следует. Вот пример такой «беседы» (подчеркнутые слова печатал пользователь).

Фамилия?

Скотинин

Имя?

Тарас

Здравствуй, Тарас Скотинин!

Нажми Enter

Примечание. Тарас Скотинин — персонаж комедии Д.И. Фонвизина «Недоросль».

Очевидно, что для хранения имени и фамилии одной переменной мало, нужны две. Памятуя о том, что секция объявления переменных допускает несколько операторов, объявим там парочку переменных.

var N : string;

S : string;

Здесь переменные N и S названы мною по первым буквам слов Name (имя) и Surname (фамилия). Объявить несколько переменных одного типа можно и в одной строке, перечислив их через запятую.

var N, S : string;

Тут две переменные объявлены одним оператором, — этот способ ничуть не хуже.

Далее, после ввода данных, надо напечатать в одной строке несколько параметров: приветствие, имя, фамилию, и восклицательный знак в конце, чтобы обратиться к Тарасу Скотинину так:

Здравствуй, Тарас Скотинин!

Достаточно ли здесь одного оператора печати? Конечно! Вот он:

63

Глава 9 Переменные: продолжение знакомства

Writeln(’Здравствуй, ’, N, ’ ’, S, ’!’);

Тут мы втиснули в процедуру Writeln аж пять параметров! Обратите внимание: в конце добавлен восклицательный знак, а между именем и фамилией печатается пробел, иначе эти слова слипнутся на экране.

После всех пояснений следующая программа должна быть вполне ясной.

var N, S : string; begin

Writeln(’Фамилия?’); Readln(S);

Writeln(’Имя?’); Readln(N);

Writeln(’Здравствуй, ’, N, ’ ’, S,’!’);

Writeln(’Нажми Enter’); Readln;

end.

Обязательно скомпилируйте её и проверьте в действии.

Из пустого в порожнее

Итак, нам удалось скроить уже два «кармана» для хранения данных. Действительно, переменные сродни карманам, здесь можно и хранить данные, и копировать из одного «кармана» в другой. Для копирования данных в Паскале применяют оператор присваивания, вот примеры копирования данных.

A

:=

'Привет, Мартышка!';

ß

копирование

строковой константы

B

:=

A;

ß

копирование

из переменной A в переменную B

 

 

 

 

 

 

Пара символов «:=» — «двоеточие» и «равно» — означают операцию присваивания. Слева от знака операции указывают переменную, в которую будут помещены данные, а справа можно указать переменную или константу. Что, по вашему мнению, напечатает следующая программа?

var A, B : string; begin

A:= 'Первая строка';

B:= 'Вторая строка';

Writeln(A);

Writeln(B);

B:= A;

 

Writeln(B);

Readln

end.

 

Очевидно, что на экране появятся следующие строки.

64

Глава 9 Переменные: продолжение знакомства

Первая строка

Вторая строка

Первая строка

Первые два оператора заносят в переменные A и B две строковые константы, которые затем печатаются. Третий оператор присваивания B:=A скопирует в переменную B значение переменной A, где уже содержится «Первая строка», — она и будет напечатана последней.

Но, к чему здесь было копировать данные из одной переменной в другую? Сейчас это не имело смысла, согласен. Но последнее слово ещё не сказано!

Сцепление строк

Спросите у любого: для чего нужны компьютеры? Для вычислений, для чего ж ещё? — ответят некоторые. Другие скажут, что для обработки данных. В самом деле, обработка данных — нечто более общее, чем вычисление. Не пора ли и нам приступить к обработке данных? Познакомимся с простейшей операцией обработки строк, которую называют сцеплением или конкатенацией.

Не пугайтесь этого заумного слова, сцепление строк — простейшее дело! Руками это делается так: берете несколько полос бумаги и пишите что-либо, — это ваши строки, — а затем склеиваете полоски. Это и есть конкатенация строк.

+

+

+

+ !

Рис. 22 – «Склеивание» отдельных строк оператором сцепления «+»

На рис. 22 представлено строковое выражение. Знаки «+» здесь обозначают операцию сцепления строк, — точно так же она обозначается и в Паскале. Показанный ниже оператор присваивания занесет в переменную R строку, «склеенную» из пяти других строк (здесь N и S — это переменные, содержащие имя и фамилию человека).

R:= ’Здравствуй, ’ + N + ’ ’ + S + ’!’;

Стало быть, справа от операции присваивания « := » может быть не только константа или переменная, но и строковое выражение.

Испытайте теперь второй вариант приветствующей программы с тремя строковыми переменными.

65

Глава 9 Переменные: продолжение знакомства

var N, S, R : string; begin

Writeln(’Фамилия?’); Readln(S);

Writeln(’Имя?’); Readln(N);

R := ’Здравствуй, ’ + N + ’ ’ + S +’!’;

Writeln(R);

Writeln(’Нажми Enter’); Readln; end.

Инициализация переменных

Если найдете силы, испытайте и эту программку (в ней есть ошибка!).

var S : string; begin Writeln(S);

S:= ’Спартак’;

Writeln(S);

S:= S + ’ – чемпион!’;

Writeln(S);

Writeln(’Нажми Enter’); Readln; end.

Здесь переменная S будет напечатана трижды. Но что, по вашему мнению, выведет первый оператор Writeln(S)? Ни за что не угадаете! Этого даже я не

знаю. Всё потому, что при старте программы содержимое всех её переменных не определено, — в этих «карманчиках» может валяться что угодно. Обычно там остаются следы от деятельности предыдущих программ — так называемый мусор. Не пытайтесь напечатать такие переменные или извлечь из них данные, — порой это может вызвать даже аварию программы.

Запомните: прежде, чем взять из «карманчика», туда следует что-либо положить! Надо, как говорят программисты, инициализировать переменную. Это можно сделать двояко: либо вводом данных процедурой Readln, либо оператором присваивания.

В последующих операторах этого примера переменная S инициализируется, и здесь результат вывода на экран очевиден. А в операторе

S:= S + ’ – чемпион!’;

предыдущее значение переменной S взято для формирования её нового значения. Теперь там окажется строка «Спартак минус чемпион!». Не обижайтесь, спартаковцы, — пошутил. Обязательно проверьте эту программу!

66

Соседние файлы в папке delphi