Люблю Паскаль, пишу на Паскале, думаю на Паскале Заметка 3. Переменные и константы. На прошлом уроке наши смелые эксперименты завершились созданием программы, которая выводит на экран приветствие и ждет любого ответа пользователя, завершенного нажатием клавиши Ввод. Данные, введенные пользователем, мы никак не используем. Это несправедливо. Следует немедленно устранить этот недочет. Поэтому, сегодня мы займемся персонализацией нашего приветствия. Попробуем научить программу знакомиться с пользователем и приветствовать его по имени. Сначала, нужно продумать алгоритм действий и структуру нашей программы. Во-первых, программа должна вывести на экран предложение пользователю ввести свое имя. Во-вторых, сохранить введенное имя в памяти. В третьих, вывести персональное приветствие. Процедуру для вывода информации на экран мы уже знаем – это writeln. Для получения ввода от пользователя тоже – это readln. Правда на этот раз нам придется еще и воспользоваться результатами ее работы. Чего же нам не хватает? Нам нужно познакомиться с новым замечательным ключевым словом var – переменная. Объявление переменной заставляет компилятор языка pascal резервировать одну или несколько ячеек памяти для хранения наших данных. А обращаться к этим ячейкам мы будем с использованием имени переменной, которое сами ей и дадим. А сколько же ячеек будет выделено? От чего это зависит? Мы подходим к еще одному важному понятию pascal – типу данных. Пока мы начнем работать с простыми типами данных, встроенными в язык. А в недалеком будущем научимся создавать свои собственные сложные структуры и размещать их в памяти. Сегодня нам понадобится встроенный тип данных string – «строка». Переменная типа string предназначена для хранения последовательности символов или текста, каковым и является наше приветствие. Но хватит рассуждать. Запускаем Delphi и приступаем к программированию. program Project3; {$APPTYPE CONSOLE} var UserName: string; begin writeln ('What is your name?');//Выводим на экран вопрос «Как Вас зовут» readln (UserName);//Ожидаем ответа пользователя и запишем ответ в переменную UserName writeln ('Hello, '+UserName);//Выводим на экран приветствие readln;//ждем нажатия клавиши ввод, чтобы не закрылось окно end. Итак, объявляем переменную. Дадим ей разумное имя, чтобы человек (мы сами, через некоторое время) сразу понял, что речь идет об имени пользователя. Вообще, язык программистов – английский. В именовании объектов программы будем стараться использовать английские слова. Обратите внимание, что для имени состоящего из двух слов вместо пробела используется написание каждого слова с заглавной буквы. Вообще, пробелы в именах в pascal недопустимы. Если очень хочется – можно использовать символ подчеркивания. И еще, хочу обратить внимание, что pascal, в отличие от Java, C, C++ нечувствителен к регистру символов. UserName, username и даже uSERnAME с точки зрения pascal – одна и та же переменная. После имени переменной укажем ее тип. Тип отделяется от имени двоеточием. Между begin и end расположен собственно код. Ничего в нем необычного нет. На этот раз он откомментирован прямо в тексте программы. Ранее, я писал, что комментарии в pascal заключаются в фигурные скобки. В Delphi разрешается использовать также комментарий после двух дробных черт. Такой комментарий действует до конца строки. В небольшом пояснении нуждается лишь конструкция writeln ('Hello, '+UserName) Строка Hello взята в кавычки. Это так называемая литеральная константа. Она выводится на экран так, как записана в тексте программы. А вот имя переменной указано без кавычек. На экран будет выведено ее значение. Если бы мы взяли имя переменной тоже в кавычки, на экране бы появилось: «Hello, UserName», а это не то что нам нужно. Знак плюс в данном случае обозначает не сложение, а так называемую конкатенацию – то есть сцепление строк. Жмем F9. На запрос программы вводим свое имя, нажимаем Ввод. Получаем персональное приветствие:  Мы используем в вводе-выводе латинские символы вовсе не случайно. В разных версиях Windows, при разных языковых настройках русские кириллические символы могут отображаться некорректно. А загромождать программный код управлением отображением кириллицы я пока не хочу. Но вдруг нам понадобится в будущем изменить приветствия на другой язык. А как неудобно выискивать в тексте программы литералы и их изменять. Вот тут мы и приходим к такому понятию, как константа. Константа позволяет дать имя числу, строковому литералу, и даже более сложным объектам. Константа не может изменяться во время работы программы. Ей ничего нельзя присвоить. Посмотрите на код. Думаю, комментарии будут излишни. program Project3; {$APPTYPE CONSOLE} const TextHello = 'Hello, '; TextYourName = 'What is your name?'; var UserName: string; begin writeln (TextYourName); readln (UserName); writeln (TextHello+UserName); readln; end. Результат работы программы не изменился, но все строковые литералы собраны рядышком, их удобно при необходимости изменить. |
Комментарии
2. Составить описание класса для объектов векторов, задаваемых координатами концов в трехмерном пространстве. Обеспечения операции сложения и вычитания векторов. С получения нового вектора (сумма или разность) вычисление скалярного произведения двух векторов, длина вектора, косинуса угла между векторами. Цитировать
помощью методов можно реализовать?
//D2007 - примерно так. Оператор вычитания зовут Sub.
type
TMyVector = class(TObject)
private
FX,FY,FZ : real;
public
class operator Add(a,b : TMyVector) : TMyVector; //сложение
property X : real read FX write FX;
//… и остальные так же
end;
implementation
TMyVector.Add(a,b : TMyVector) : TMyVector;
begin
Result.X := a.X+b.X;
Result.Y := a.Y+b.Y;
Result.Z := a.Z+b.Z;
end;
//пример использования
var
a,b,c : TMyVector;
begin
a := TMyVector.Create;
b := TMyVector.Create;
c := TMyVector.Create;
a.X := 5;
a.Y := 7;
a.Z := 0;
b.X := -2;
b.Y := 3;
b.Z := 4;
c := a + b;
end; Цитировать
RSS лента комментариев этой записи.