Лекция 3. Операции и операнды. Выражения. Стандартные функции и процедуры 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лекция 3. Операции и операнды. Выражения. Стандартные функции и процедуры



Лекция 1. Введение

Немного истории

Вначале никаких языков программирования не было – для первых ЭВМ программы писались на «чистом» машинном языке. Это было весьма трудным и кропотливым занятием. Затем кому-то пришло в голову, что проще создать программу, которая сама будет переводить исходный код, написанный по определенным правилам, в машинный язык. Так появился первый компиляторАссемблер. Компилятор – программа, которая переводит исходный программный код в машинный язык, и создает полноценный исполняемый программный файл. Такие файлы могут иметь расширение *.com и *.exe. Расширения *.com изредка еще встречаются в старых программах, которые создавались под операционную систему MS-DOS. Все современные программы, созданные для Windows, имеют расширение *.exe.

Также существуют интерпретаторы – программы, которые не создают исполняемый программный файл. Интерпретаторы представляют собой оболочку, в которую нужно загрузить файл с исходным текстом программы, затем интерпретаторы построчно переводят код в машинный язык, и выполняют его. Наиболее известным интерпретатором является классический Бэйсик (Basic). Неудобство использования интерпретаторов и программного обеспечения, созданного на них, не позволяют использовать их широко. Для распространения программ, созданных на интерпретаторе, необходимо на компьютер пользователя установить не только написанную программу, но и сам интерпретатор. А пользователю придется научиться пользоваться этим интерпретатором (загружать в него программу, давать команду на выполнение), а также научиться пользоваться самой программой. Однако в некоторых случаях интерпретаторы бывают весьма полезны, например, интерпретаторы PHP и Perl, используемые в Web-программировании, выполняются на стороне сервера, и не доставляют пользователю проблем.

Ассемблер наиболее приближен к машинному языку, поэтому его называют языком низкого уровня. Писать программы на Ассемблере было проще, чем на «чистом машинном» языке, в результате программы создавались быстрей. Рынок программного обеспечения имеет одно важное свойство – лидирует та программа, которая появилась на рынке раньше. Создавать программы на Ассемблере стало не только проще, но и выгодней.

Создание Ассемблера способствовало бурному развитию языков программирования. Появилось множество языков высокого уровняC, C++, Pascal и многие другие. Правила создания кода на языка высокого уровня более приближены к человеческим языкам, поэтому программы на таких языках создавались еще проще и быстрей. Языки программирования стали совершенствоваться не по дням, а по часам. Первые языки высокого уровня были процедурными – в них логика программы строилась на использовании функций и процедур, которые можно вызвать из любого места программы.

Затем появились объектные языки программирования. В них логика программы строилась на объектах, каждый из которых имел собственные свойства, методы и события, которые могли быть унаследованы потомками этого объекта. Другими словами, создание программ многократно облегчалось – вместо того, чтобы написать десяток страниц кода, достаточно было просто объявить такой-то объект. Такие языки стали называть объектно-ориентированными (ООП – Объектно- Ориентированное Программирование).

Последним звеном эволюции языков программирования стали визуальные среды разработки программ. Вы просто выбираете объект – компонент, перетаскиваете его на форму, и уже в процессе разработки программы видите то, что должно получиться в результате. Примерно также при редактировании текста в редакторе MS Word вы сразу видите то,что должно получится при печати этого текста на лист бумаги. Среда разработки программ взяла на себя почти всю «черную» работу по созданию кода. Программирование перестало быть нудным и трудоемким, и превратилось в творческий процесс.

Конечно, за все в мире приходится платить. За удобство создания программ мы расплачиваемся увеличением размера исполняемого программного файла, которое особенно заметно при создании небольших программ, и практически незаметно при создании сложных программных комплексов. Современные персональные компьютеры имеют быстрый процессор, память и жесткие диски больших размеров, так что на это неудобство можно уже не обращать внимания. Разумеется, бывают исключения – если при создании программного кода критическими являются размер исполняемого файла и скорость его исполнения, то лучше использовать Assembler или C. Такая необходимость возникает при написании операционных систем и драйверов. На современном рынке программного обеспечения, однако, более востребовано прикладное программирование. Утилиты, программы общего назначения, программы для работы с базами данных. И здесь Delphi является бесспорным лидером среди визуальных сред разработки программ.

История Delphi начинается с 60-х годов, когда профессор Н.Вирт разработал язык высокого уровня Pascal. Это был лучший язык для изучения программирования, и для создания программ для операционной системы MS-DOS. Затем, в 1983 году, А. Хейлсберг совместно с другими программистами, которые только что организовали компанию Borland, разработал компилятор Turbo Pascal, который стал следующим шагом в эволюции Delphi. Затем появился Object Pascal, который уже использовал Объектно-Ориентированный подход к программированию. Когда появилась первая версия Windows – Windows 3.10, Программисты Borland создали Delphi 1. Это уже была объектно- ориентированная среда для визуальной разработки программ, основанная на языке Object Pascal.

С появлением Windows 95 появилась Delphi 2, затем Delphi 3, 4, 5. Язык программирования Object Pascal, который являлся стержнем Delphi, претерпел такие существенные изменения, что с появлением Delphi 6 компания Borland, которая уже превратилась в корпорацию, официально объявила о переименовании Object Pascal в Delphi. Поэтому правы те, кто говорит, что Delphi – это визуальная среда разработки программ. Но также правы и те, кто утверждает, что Delphi – это один из лучших языков программирования.

На нашем курсе мы будем изучать Delphi 7, наиболее стабильную версию языка программирования для Win32 – то есть 32-разрядных версий Windows. Появились и новые версии Delphi, но они ориентированны на технологию.NET, за которую начинающим программистам браться рановато. Тем более, что эта технология еще не применяется широко, и рынок программного обеспечения, созданного с помощью Delphi, все равно составляют программные продукты, написанные на Delphi 7, и даже более ранних версий.

Основу Delphi составляет не только сам язык, но и RAD (Rapid Application Development)среда быстрой разработки программ. Благодаря визуальному программированию, а также достаточно большой библиотеке визуальных компонентов, Delphi позволяет создавать программы наиболее быстро и эффективно, принимая на себя основную работу, и оставляя программисту творческий процесс. Разумеется, возможность быстрого создания профессиональных приложений для Windows делает Delphi – программистов востребованными во всех отраслях человеческой деятельности.

Первая программа

Традиционно при изучении программирования принято создавать первую программу, которая выводит текст «Hello, world!». Не будем отступать от традиции и создадим программу, которая выводит этот текст тремя разными способами. Но вначале познакомимся с самой средой программирования Delphi. Предполагается, что на этот момент Delphi 7 уже установлена на вашем ПК. Если это не так, то перед дальнейшим прочтением лекции установите Delphi 7. При загрузке Delphi 7 вы видите такую картину:

Рис. 1.1 Рабочая среда Delphi 7.

Познакомьтесь – это Delphi. У нее есть много окон, панелей, компонентов. С большинством из них мы познакомимся со временем, а пока нам нужно обратить внимание на 5 окон:

1. Главное окно Delphi. Здесь находится основное меню, различные панели инструментов и палитра компонентов, состоящая из множества вкладок.

2.Конструктор формы. Здесь мы визуально видим, как будет выглядеть форма программы, здесь мы будем создавать интерфейс, перенося на форму различные компоненты, и расставляя их таким образом, чтобы интерфейс выглядел привлекательным. Нам часто придется переключаться между конструктором форм и редактором кода, делается это клавишей F12.

3. Редактор кода. Здесь мы видим исходный код программы, который создан самой Delphi. Тут же мы будем вводить наш собственный код.

4. Объектный инспектор. Он предназначен для управления объектами проекта и состоит из двух вкладок – Properties (Свойства) и Events (События).

5. Дерево объектов. Здесь мы видим, какой именно объект в данный момент является текущим. Это окно будет особенно полезно, когда на форме появится множество компонентов.

Когда открывается Delphi, она автоматически создает и отображает новый проект (программу). На рисунке вы видите проект, который содержит только одну стандартную форму. Форма – это тоже объект, который представляет собой окно программы. Чтобы программа делала что-то полезное, нам 5 придется вносить изменения в нее. Выведем текст «Hello, world!» первым способом. Для этого в инспекторе объектов найдите свойство Caption. В данный момент текущим является объект – форма, и свойство Caption формы отвечает за надпись на системной строке программы (синяя полоса вверху любого программного окна). По умолчанию, свойство Caption содержит надпись «Form1», также называется и сама форма. Измените эту надпись на «Hello, world!» (конечно, без кавычек). Уже в процессе ввода текста вы видите, что надпись в системной строке принимает новый вид. Мы ввели этот текст одним способом.

Теперь нам нужно сохранить проект. Проект – совокупность файлов разных форматов, из которых создается программа. Об этом мы подробней поговорим в одной из следующих лекций, а пока запомните правило – каждую программу (проект), которую вы создаете, нужно сохранять в отдельной папке. Если вы все проекты станете сохранять в одну папку, то очень скоро запутаетесь. Чтобы сохранить проект, выполним следующие действия:

1. Выбираем команду меню «File – Save All» (сохранить все), либо нажимаем горячие клавиши, либо нажимаем одноименную кнопку на панели инструментов

Рис. 1.2 Кнопки Save (Сохранить) и Save All (Сохранить всё) на панели инструментов.

2. Затем выходит окно с предложением сохранить модуль – текстовый файл с исходным кодом, принадлежащий форме. Файл имеет расширение *.pas. Имеем в виду, что каждый проект сохраняется в отдельную папку, поэтому вначале щелкнем правой кнопкой мыши по свободному месту окна с папками, и выберем команду «Создать - Папку». Дадим папке какое-либо имя, например, «01». После создания папки открываем ее.

3. Далее в поле «Имя файла» укажем имя сохраняемого модуля. Имя может быть любым, но обязательно латинскими символами. Еще имя модуля не должно совпадать с именем формы. Обычно, имена формам и модулям стараются делать информативными, то есть, по имени можно будет догадаться, что это за файл. Поскольку это главная форма проекта, дадим ей имя «Main», и нажмем кнопку «Сохранить».

4. Затем нам будет предложено дать имя проекту в целом. Имя проекта будет совпадать с именем исполняемого программного файла. Если мы хотим, к примеру, получить файл «hello.exe», то дадим проекту имя «hello». Нажмем кнопку «Сохранить».

Далее нам необходимо скомпилировать программу, то есть, перевести исходный код в выполняемый exe-файл. Для этого мы можем выбрать команду меню «Run - Run», либо нажать горячую клавишу F9, либо нажать кнопку «Run» на панели инструментов (на кнопке изображение зеленой стрелки, указывающей вправо). В результате, программа была не только скомпилирована, но и запущена. Если вы посмотрите на системную строку Delphi, то увидите надпись «Delphi 7 – hello [Running]», а окна инспектора объектов и дерева объектов исчезли. Это говорит о том, что программа находится в режиме выполнения. Выполняемая программа имеет точно такой же вид, как наша главная форма, только на форме отсутствует точечная сетка, предназначенная для облегчения дизайна. Окно полученной программы содержит все стандартные кнопки Windows – программы. Щелкнув по красному крестику в правой верхней части окна, закройте программу (но не Delphi), и вы увидите прежнюю форму.

Обратите внимание, что свойства в Объектном Инспекторе принадлежат выделенному в данный момент компоненту. Выделяются компоненты простым щелчком мыши. Имейте в виду, что щелкать нужно один раз. Двойной щелчок создаст обработчик события – процедуру. Если вы ошибочно создадите таким образом процедуру, то просто сохраните проект, ничего в нее не вписывая – при сохранении последние пустые процедуры автоматически удаляются. Удалять их вручную не рекомендуется.

Попробуем второй способ. Обратите внимание на Палитру компонентов. Текущей является вкладка Standard, и на ней находится множество значков – компонентов. Когда вы подводите указатель мыши к какому-либо компоненту, через некоторое время выскакивает подсказка с именем компонента. Нам нужен компонент Label, который представлен на вкладке в виде кнопки с изображением жирной буквы «А». Щелкните по этой кнопке, затем щелкните по свободному месту на форме, чтобы вставить компонент. Лучше, если вы расположите его ближе к левому верхнему краю формы. Компонент Label появился на форме. Этот компонент представляет собой обычную надпись. Сейчас он выделен, и содержит надпись по умолчанию, - «Label1». Теперь объектный инспектор показывает свойства этого компонента, а не формы. Label также имеет свойство Caption, которое вы можете изменить в Инспекторе объектов. Найдите это свойство, и вместо «Label1» впишите «Hello, world!». Текст в компоненте Label изменился. Если вам не нравится место, в котором оказался компонент, вы можете перетащить его мышью на другое место. Кроме того, точное местоположение компонента вы можете задать, если выделите его, и будете нажимать клавиши перемещения курсора, удерживая при этом клавишу. Теперь попробуйте еще одно свойство компонента Label – свойство Font (шрифт). Найдите это свойство в инспекторе объектов, и выделите его. Справа появится кнопочка с тремя точками, нажмите ее. Откроется стандартное окно выбора шрифта. Здесь вы можете выбрать имя шрифта, его размеры, начертание (например, жирный курсив) и цвет текста. Поэкспериментируйте с размером компонента, его положением и шрифтом. Почти все компоненты, с которыми нам придется иметь дело, имеют эти свойства, так что в дальнейшем вам будет легче осваивать новый компонент.

Снова сохраните проект и нажмите кнопку Run (или). Убедитесь, что надпись появилась на форме, после чего закройте программу (но не Delphi) и вернитесь к форме.

Попробуем третий, немного более сложный способ. Пока что мы создавали программу, не написав ни единой строки кода. Мы занимались только дизайном, все остальные трудности Delphi взяла на себя. Теперь попробуем вывести это же сообщение, как только пользователь нажмет кнопку на форме.

Для начала нужно установить на форму кнопку. Этот компонент также находится на вкладке Standard палитры компонентов, и выглядит как кнопочка с надписью «ОК». При наведении на него указателя мыши выскакивает подсказка «Button». Щелкнув по компоненту, щелкните затем по тому месту на форме, где вы хотели бы видеть эту кнопку. Изменим надпись на кнопке. Убедитесь, что кнопка выделена, и найдите в инспекторе объектов ее свойство Caption. Замените надпись «Button1» на «Нажми меня!». Если надпись не умещается на кнопке, вы можете растянуть кнопку мышью, или использовать для этого клавиши управления курсором с нажатой кнопкой.

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

ShowMessage('Hello, world!');

Полный текст процедуры получится такой:

procedure TForm1.Button1Click(Sender: TObject);

Begin

ShowMessage('Hello, world!');

end;

Если у вас так и получилось, сохраните проект, откомпилируйте его и запустите на выполнение. При нажатии на кнопку будет появляться указанная надпись. Мы создали полноценную программу, выводящую надпись «Hello, world!» тремя различными способами, вписав при этом лишь одну строку исходного кода! Полученный файл hello.exe находится в указанной вами папке

C:\Programm Files\Borland\Delphi7\Projects\01

При сохранении проекта вы можете указывать и другие папки, и проект будет сохранен по указанному адресу. Полученный программный файл hello.exe вы можете теперь распространять, например, переслать другу, чтобы он полюбовался вашими достижениями.

 

 

Лекция 2. Переменные

В любом языке программирования приходится использовать переменные. При загрузке программы, компьютер вначале считывает все необходимые данные в оперативную память, после чего уже имеет возможность работать с ними. Переменная – это ячейка оперативной памяти, которая может хранить данные какого-то одного типа. Переменная похожа на ячейку в MS Excel, там тоже в ячейке можно указать нужный формат данных. Если переменная имеет тип данных «строка», то в нее нельзя записать число. А в переменную с типом «целое число» нельзя записать вещественное число. В языках программирования вещественным называют число, у которого есть запятая, после которой имеются цифры, хотя бы нули:

125,00

348,24

Каждая переменная имеет уникальное имя. Для компьютера имя переменной – это адрес ячейки памяти, где хранятся данные. Присваиванием имен (идентификаторов) переменным занимается программист. Имена переменным в Delphi даются по определенным правилам:

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

2. Первым символом обязательно должна быть буква.

3. В Delphi нет разницы, какие буквы вы даете переменным – большие или маленькие. То есть, myperem, MyPerem, MYPEREM – это одна и та же переменная.

Совет: Переменную можно назвать одной буквой. Однако уже через месяц или раньше вам очень трудно будет вспомнить, зачем вы делали переменную F, и какие данные в ней хранятся. Поэтому старайтесь давать переменным осмысленные имена и сочетайте большие буквы с маленькими для разделения на слова. Хорошие примеры – MinZarplata или Glav_Param.

Типы переменных

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

1. Объявление переменной (указываем имя и тип переменной). Переменная объявляется в специальном разделе var (позже мы познакомимся с этим разделом).

2. Присвоение переменной какого-то значения.

Объявление переменной выглядит так:

Var

Peremennaya1: Real;

Peremennaya2, Peremennaya3: Integer;

Как видно из примера, Вначале указывается имя переменной, затем, после двоеточия указывается тип переменной. Если нужно объявить несколько переменных одного типа, их имена разделяются запятыми. В приведенном примере мы объявили одну вещественную переменную типа Real и две целые переменные типа Integer.

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

:=

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

A:= 10;

B:= 20.35;

C:= 'Это строка';

D:= True;

A:= 3+5-1;

Механизм присвоения значения работает следующим образом: вначале рассчитывается значение в правой части команды, то есть, после знака «:=». Затем результат этого значения записывается в переменную. В последней строке примера мы использовали выражение «3+5-1». Вначале получается результат, в нашем случае он равен 7. Затем этот результат записывается в переменную.

В дальнейшем, имя переменной можно использовать в различных выражениях, например:

A1:= 3;

A2:= A1 + 7;

A1:= A1 + 1;

В первой строке мы записали в переменную число 3. Вторая строка содержит выражение, результатом которого будет число 10. А вот третья строка интересней. Как вы полагаете, что будет записано в переменную A1? Если ваш ответ 4, вы совершенно правы: вначале рассчитывается результат правой части команды, где в переменной A1 еще старое значение, затем он записывается в эту же переменную, изменяя ее значение.

В таблице 2.1 перечислены основные типы переменных:

         
  Название типа Описание Пояснение  
  Integer Целое число Переменная может содержать только целые числа, как со знаком, так и без знака.  
  Real Вещественное число Переменная может принимать в качестве значения целые и дробные числа, со знаком и без знака.  
  String Строка Переменная может хранить любые символы и наборы символов. В переменную String можно записать до 2 Гб символов.  
  Boolean Логический тип Булева переменная, может быть либо False (Ложь), либо True (Истина).  
         

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

Стиль

Если вы надумаете пойти устраиваться на работу программистом, первым делом вас попросят показать ваши исходные коды. И дело тут вовсе не в том, что кто-то хочет украсть вашу программу, чтобы потом выдать ее за свою. Понимающие люди в первую очередь смотрят на стиль оформления кода. Давайте рассмотрим предыдущий пример:

procedure TForm1.Button1Click(Sender: TObject);

var s: String; begin s:= 'Привет, ' + Edit1.Text + '!'; ShowMessage(s); end;

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

procedure TForm1.Button1Click(Sender: TObject);

Var

s: String;

Begin

s:= 'Привет, ' + Edit1.Text + '!';

ShowMessage(s);

end;

Уже лучше, не правда ли? Каждая команда располагается на своей собственной строке, читаемость кода стала намного легче. Однако в таком коде сразу сложно разобраться, где заканчивается один раздел и начинается другой. Классический стиль требует, чтобы вложенные команды выделялись несколькими пробелами, сдвигались вправо:

procedure TForm1.Button1Click(Sender: TObject);

Var

s: String;

Begin

s:= 'Привет, ' + Edit1.Text + '!';

ShowMessage(s);

end;

Такой код читать еще легче. Старайтесь сразу привыкать к такому стилю, чтобы не только другим было легко читать ваш код, но и вы сами не запутались в нем. Позднее мы еще вернемся к стилям программирования.

Комментарии

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

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

{Это многострочный комментарий!}

Как видите, кавычки после закрывающей скобки ставить не нужно.

Однострочный комментарий ставится после символов «//», то есть двух слэшей. Этот комментарий может находиться как на отдельной строке, так и после (но не до!) оператора. Примеры

//комментарий на отдельной строке

a:= 'Действующий оператор'; //комментарий после оператора

Не скупитесь на комментарии, обязательно указывайте, какую переменную и для чего вы создавали, что делает тот или иной блок кода. Говорят, в корпорации Microsoft увольняют программистов, если комментарии в их программах составляют менее трети общего кода.

 

Операторы

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

Простые операторы - это операторы, не содержащие в качестве составных частей другие операторы. К простым относятся: оператор присваивания, оператор процедуры оператор перехода goto, пустой оператор. К сложным относятся: составной оператор условный оператор if, оператор выбора case, оператор цикла с параметром for, оператор цикла с предусловием while, оператор цикла с постусловием repeat, и оператор присоединения with.

Операторы можно помечать метками и ссылаться на них в операторах перехода goto. Пустой оператор не выполняет никаких действий, в него не входят какие- либо символы. Например, если в программе идут дна подряд символа «точка с запятой», то это означает, что между ними находиться пустой оператор. Или,если перед зарезервированным словом and стоит «;», то это означает, что между «;» и and стоит пустой оператор. Пустой оператор может быть помечен меткой и, таким образом, быть использованным для передачи управления в программе.

Оператор присваивания предназначен для замены текущего значения переменной новым, задаваемым значением.

В общем виде оператор записывается:

< переменная >:= <выражение >;

Переменная и выражение должны быть идентичного или совместимого для присваивания типа. Например, переменной вещественного типа можно присвоить значение выражения вещественного или целого типа. Переменной же целого типа нельзя присвоить значение выражения вещественного типа.

Примеры использования оператора присваивания:

a:=b+с;

х:=(0<а) and (а<3);

w:=sin(sqr(t))/(s+ln(v));

s:=' строка';

d:=[ red, white, black, blue ];

Ввод-вывод информации

В консольном приложении ввод данных с клавиатуры осуществляется при помощи стандартных процедур read и readln, а вывод на экран дисплея - при помощи процедур write и writeln.

Процедуры Read и Readln

В Object Pascal имеет две основные процедуры ввода Read и Readln, которые используются для чтения данных, вводимых с клавиатуры. Общий формат этих процедур следующий:

Read(элемент1,элемент2,…); или

Readln(элемент1,элемент2,...); где каждый элемент представляет собой переменную целого, вещественного, символьного или строкового типа, например:

read(x,y,z);

readln(name,age);

При выполнении процедуры read происходит следующее. Программа приостанавливает свою работу и ждет, пока на клавиатуре будут набраны нужные данные и нажата клавиша Enter.

После нажатия клавиши Enter, введенные значения присваиваются переменным, имена которых указаны в процедуре read.

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

Read(x0); и ввода с клавиатуры строки 32, значением переменной x0 будет целое число 32,если x0 имело тип integer, и вещественные число 32.0,если x0 имеет тип real.

Одна процедура read позволяет внести значения нескольких переменных. Если вводятся числовые значения, то они должны быть набраны в одной строке и разделены пробелами. Например, если тип переменных х,у и z - real, то в результате выполнения процедуры

read(х,у,z);

и ввода с клавиатуры строки

5.25, 10, -0.05

переменные будут иметь следующие значения:

х=5.25, у=10. 0, z=-0.05.

Если в строке экрана после запуска программы набрано больше чисел, чем задано элементов в списке ввода процедуры read, то оставшаяся часть строки будет проигнорирована или обработана следующей процедурой read, если такая имеется. Например, если k, I — переменные целого типа, то в результате выполнения процедур:

read(i,к);

read(I);

и ввода с клавиатуры строки

5, 10, 15

переменные получат следующие значения:

I=5, k=10, 1=15.

В отличие от процедуры read процедура readln после ввода всех указанных в процедуре элементов списка ввода осуществляет переход к следующей строке дисплея. Отсюда следует, что если в списке ввода процедуры readln указано меньше элементов, чем расположено значений в строке дисплея, то избыточная часть строки будет утеряна, а следующая процедура read иди readln будет требовать ввода данных с новой строки дисплея. Например, в результате выполнения процедур

readln(s, t,w);

read(q); и ввода с клавиатуры строки

6, 9, 12, 15

переменные получат следующие значения (в предположении, что они все имеют целый тип):

s=6, t=9, w=12.

После чего программа будет ожидать нажатия клавиши Enter и ввода нового числа с новой строки дисплея, чтобы присвоить его переменной q.

Рассмотрим решение следующей задачи. Пусть требуется ввести данные: a= 3,7; b=-1,6 10^6; k= 101; 1=-25; с’*’; d=’?’; p=true и изобразить строки ввода данных на экране дисплея.

При решении этой задачи следует учитывать, что данные целого и вещественного типов отделяются друг от друга пробелами в строке ввода. Это значения переменных a,b,k и I. Целая часть от дробной отделяется точкой. Данные символьного типа (значе-ния переменных с и d) записываются в строке ввода подряд, без использования пробела в качестве разделителя. Данные логического типа (значение переменной р) нельзя вводить с использованием процедуры ввода. Одним из вариантов решения этой задачи может быть следующий:

................

const p=true;

readln(a,b,k,1);

readln(c,d);

...............

Строки ввода данных:

3.7, -1.6е-6, 101, -25

Процедуры Write и Writeln

Назначение процедуры writeln - выводить информацию на экран. В общем виде они записывается следующим образом:

writeln(элемент1,элемент2,...);

где каждый элемент - это то, что нужно напечатать на экране. Элементом списка вывода, может быть, например, целое или вещественное число (3.42,-1732.3), символ (‘a',’ Z’), строка ('Hello,world') или логические значение (true). Кроме того, им может быть именованная константа, переменная, разыменованный указатель или обращение к функции если она возвращает значение, которое имеет целый, вещественный, символьный, строковый или логический тип. Все элементы печатаются в одной строке дисплея в заданном порядке. После этого курсор устанавливается в начало следующей строки. Если вы хотите оставить курсор на той же строке после последнего элемента, то используйте процедуру:

write(элемент1,элемент2,...);

Когда распечатываются элементы списка вывода при помощи процедуры writeln, между ними пробелы автоматически не вставляются. Поэтому, если вы хотите разделим выводимые значения пробелами, то они должны быть указаны в списке вывода непосредственно, например:

writeln(a,' ',b,' ',...);

Предположим, что переменные x,y,z и student имеют значения: х:= 2; у:= 4: z:= 6 student:=’Ivan'. Тогда выполнение процедур вывода приведет к появлению на экране следующих строк:

Процедуры выводаРезультат

writeln(x,y,z); 246

writeln(x,' ',у,’ ', z); 2 4 6

writeln(‘Hello’,student); Hellolvan

writeln(‘Hello’,student); Hello, Ivan.

Для улучшения внешнего вида выводимых на экран дисплея данных можно использовать формат (описание поля вывода) для определения количества позиций которые займет на экране дисплея элемент из списка вывода. В этом случае процедура вывода будет иметь вид:

writeln(элемент1: ширина1, элемент2:ширина2,...)

где ширина - целое выражение (константа, переменная, обращение к функции или комбинация из них), определяющее общую длину поля, в котором должен быть записан элемент. Например, для переменных целого типа, имеющих значения k=50, m=3, n= 200 форматный вывод на экран дисплея даст следующий результат:

Процедуры вывода Результат

writeln(k,m,n); 503200

writeln(k:2,m:2,n:2); 50 3200

writeln (k: 3,m: 3,n: 3); 50 3200

writeln(k,m:2,n:4); 50 3 200

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

Что произойдет, если ширина поля меньше, чем необходимо? Во второй процедуре writeln из приведенного выше примера для переменной n, имеющей значение 200, указанна ширина поля 2, хотя необходима ширина 3. Мы видим, что в этом случае Object Pascal увеличил ширину поля до минимально необходимого размера.

Рассмотренный выше способ задания формата можно использовать для целых и ве-щественных значений, символов, строк и логических выражений. Однако при таком задании ширины поля вещественные числа распечатываются в экспоненциальной форме. Так для w = 123.45 будем иметь:

Процедуры вывода Результат

writeln(w); 1.2345000Q000000E+02

writeln(w:8); 1.2E+0002

Поэтому в Object Pascal для вещественных значений предусмотрено после ширины поля через двоеточие указывать и второй параметр - количество позиций, отводимых для дробной части из общей ширины поля. Этот второй параметр указывает распечатать вещественное число в формате с фиксированной точкой и определяет, сколько цифр поместить после десятичной точки. Например, переменную w можно вывести на экран следующим образом:

Процедуры вывода Результат

Writeln(w:6:2); 123.45

Writeln(w: 8:2); 123.45

Writeln(w: 8:4); 123.4500

Пример 1.

Составим программу для ввода и вывода данных. a= 3,7; b=-1,6 102; k=101; l=-25; с='*'; d=’?’; p=true. Выведем данные по стандартом формату (т.е. без указания формата), но формату с укачанной шириной поля и изобразим строки вывода.

Решение

При использовании процедур ввода read и readln принято перед выполнением каждой из них выдавать на экран дисплея соответствующее сообщение-подсказку о том, что необходимо ввести. Это можно сделать, используя процедуры write или writeln.

Консольное приложение создается в операционной системе Windows, где символы кодируются в соответствии с таблицей кодов ANSI. При запуске консольного приложения создается так называемая виртуальная MS-DOS-машина, использующая операционную систему MS-DOS и, соответственно, таблицу кодов ASCII. Таблицы кодой ANSI и ASCII содержат по 256 кодов символов, включая коды букв английского и русского алфавита. Буквы английского алфавита находятся в первой половине таблицы, а русского - во второй. Отличаются обе таблицы как раз второй половиной,содержащей буквы русского алфавита. Поэтому, если в консольном приложении сообщения-подсказки в процедурах write или writeln будут набраны на русском языке,то при выполнении приложения внутри виртуальной MS-DOS-машины сообщения будут искажены. Чтобы избежать этого, можно, например, записывать сообщения на английском языке. Можно, конечно, писать сообщения и на немецком, и на французском и даже на русском - только при этом необходимо все-таки использовать буквы английского алфавита. Указанное ограничение имеет место только для консольных приложений. Для оконных приложений, создаваемых и выполняемых в одной операционной системе — Windows - по ограничение отсутствует.

Программа

Program1;

{$APPTYPE CONSOLE}

Uses

SysUtils;

const p=true;

var a,b:real;

k,l:integer;

c,d:char;

Begin

writeln('enter a,b');

readln(a,b);

writeln('enter к,l');

readln(k,1);

writeln('enter c,d’};

readln(c,d);

writeln('standard format'};

writeln(a);

writeln(b);

writeln(k,l);

writeln(c,d,p);

writeln('given format');

writeln(a:3:l,b:ll:7);

writeln(k:4,l:4);

writeln(c:2,d:2,p:5);

readln



Поделиться:


Последнее изменение этой страницы: 2017-01-20; просмотров: 109; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 44.200.74.73 (0.177 с.)