Песни о Паскале - [16]

Шрифт
Интервал

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


>var N : string;

>      S : string;


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


>var N, S : string;


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

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


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


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


>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.


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


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

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

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


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

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

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

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

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



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

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


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


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

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


>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 инициализируется, и здесь результат вывода на экран очевиден. А в операторе


Рекомендуем почитать
Люди как птицы

Гера обладает необычным даром полёта. И эта её способность вызывает у одних — пламенную любовь и всплеск творчества, у других — желание подчинить и завоевать, у третьих — жажду обладания и овладения технологией чуда… Какова же судьба девушки в сложном, жестоком мире?


Дороги своих любят

Четыре противоположности, чьи судьбы однажды удивительным образом переплелись – наемник, монах, воришка и маг – седлают коней. Что там, за горизонтом? Погони, разнесенные трактиры и странствующие музыканты да не оставят вас! Верные мечи, молитвы богам, ловкие руки, магия, и, конечно, верное плечо друга – и дороги будут благосклонны к своим любимцам, можете мне поверить.У менестрелей тяжелая работа. Но что на счет тех, кто им ее создает?


Зазеркалье. Фея для демона

Добрая и наивная сказка о любви.


Воровка

Воровство — тяжёлое и опасное ремесло. А уж в будущем, где идёт масштабная борьба технологий — и подавно! Одно-единственное дело может прославить исполнителя на всю обитаемую вселенную, а может безвозвратно погубить его карьеру. За свою небольшую жизнь Аля успела испытать на себе все прелести и блага известности, по чистой случайности не наткнувшись на изнанку успеха. Однако за спокойствие всегда приходится платить, и чем дольше оно будет длиться, тем дороже выйдет расплата. Свежие задания, новые знакомства, неожиданные встречи и непредсказуемые ситуации… Ни одному вору не дано знать, чем обернётся очередная вылазка, и не придётся ли после неё в спешном порядке менять привычный уклад жизни.Наконец и Але пришёл припозднившийся счёт.


Ли Кахори: Космическая любовь

На календаре 2283г. и у тебя светлое будущее.Ты — сын Советника Земного Союза и красивый парень. Отличник на курсе и прекрасный спортсмен. Просто тебе не повезло, Ли Кахори. Первой твоей ошибкой было влюбиться в сестру близкого друга, ну а второй — не отказаться от ваших взаимных чувств в угоду ее будущему жениху.Ты думал, что потерять ногу — это самое плохое в твоей жизни? Ты глубоко заблуждался, Лирой, мясорубка только начинается. Но ты ведь пройдешь этот путь до конца, так, Кахори? История про сильных духом, чья любовь разрушает любые преграды.Присутствует сёнэн-ай среди второстепенных героев.


Правила экстрасенса

Дело происходит в Питере. Молодой оперативник одного из убойных отделов Леонид Воронцов вызывает на допрос некоего бизнесмена Рыбкина с целью весьма низкой, а именно, получение взятки. Однако у Рыбкина, обвиняющегося в организации убийства своего зама, на этот счет совсем другие планы. Он подстраивает всё так, чтобы Воронцов получил сильный удар током, обычно в таких случаях ведущий к смерти. И Лёня действительно оказывается в морге. Однако в то время, когда для остальных такое путешествие, как правило, является последним, Лёнина история с него только начинается...