4823

Основы программирования на языке Turbo Pascal

Лекция

Информатика, кибернетика и программирование

Основы программирования Цель: Дать студентам основы программирования. Задачи: Воспитательная: повторение уже изученного языка программирования TurboPascal. Учебная: научить правильно применять константы и переменные. Развивающая: развитие вним...

Русский

2012-11-27

246 KB

3 чел.

Основы программирования

Цель:

Дать студентам основы программирования.

Задачи:

Воспитательная: повторение уже изученного языка программирования Turbo Pascal.

Учебная: научить правильно применять константы и переменные.

Развивающая: развитие внимательности.

План занятия.

  1.  Организационный момент.
  2.  Изучение нового материала.
  3.  Контрольные вопросы.
  4.  Резюме.
  5.  Домашнее задание.

Изучение нового материала.

Программа

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

Этапы разработки программы

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

1. Спецификация (определение, формулирование требований к программе).

2. Разработка алгоритма.

3. Кодирование (запись алгоритма на языке программирования).

4. Отладка.

5. Тестирование.

6. Создание справочной системы.

7. Создание установочного диска (CD-ROM).

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

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

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

   Отладка Отладка — это процесс поиска и устранения ошибок. Ошибки в программе разделяют на две группы: синтаксические (ошибки в тексте) и алгоритмические. Синтаксические ошибки — наиболее легко устраняемые. Алгоритмические ошибки обнаружить труднее. Этап отладки можно считать законченным, если программа правильно работает на одном-двух наборах входных данных.

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

   Создание справочной системы Если разработчик предполагает, что программой будут пользоваться другие, то он обязательно должен создать справочную систему и обеспечить пользователю удобный доступ к справочной информации во время работы с программой. В современных программах справочная информация представляется в форме СНМ- или HLP-файлов. Помимо справочной информации, доступ к которой осуществляется из программы во время ее работы, в состав справочной системы включают инструкцию по установке (инсталляции) программы, которую оформляют в виде Readme-файла в одном из форматов: TXT, DOC или НТМ.

   Создание установочного диска Установочный диск или CD-ROM создаются для того, чтобы пользователь мог самостоятельно, без помощи разработчика, установить программу на свой компьютер. Обычно помимо самой программы на установочном диске находятся файлы справочной информации и инструкция по установке программы (Readme-файл). Следует понимать, что современные программы, в том числе разработанные в Delphi, в большинстве случаев (за исключением самых простых программ) не могут быть установлены на компьютер пользователя путем простого копирования, так как для своей работы требуют специальных библиотек и компонентов, которых может и не быть у конкретного пользователя. Поэтому установку программы на компьютер пользователя должна выполнять специальная программа, которая помещается на установочный диск. Как правило, установочная программа создает отдельную папку для устанавливаемой программы, копирует в нее необходимые файлы и, если надо, выполняет настройку операционной системы путем внесения дополнений и изменений в реестр.

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

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

   В качестве примера на рис. Приведено диалоговое окно программы Стоимость покупки.  После разработки диалогового окна и алгоритмов обработки событий можно приступить к написанию программы. Ее текст приведен в листинге.

Листинг. Программа Стоимость покупки 

unit pokupka_1;

interface 

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type

   TForm1 = class(TForra)

   Edit1: TEdit;

   Edit2: TEdit;

   Label1: TLabel;

   Label2: TLabel;

   Button1: TButton;

   Label3: TLabel;

   procedure ButtonlClick(Sender: TObject);

   procedure Edit2KeyPress(Sender: TObject; var Key: Char);

   procedure EditlKeyPress(Sender: TObject; var Key: Char);

private

   { Private declarations }

public

   { Public declarations }

end;

var Forml: TForm1;

implementation

{$R *.dfm}

// подпрограмма 

procedure Summa;

var

   cena: real; // цена 

   kol: integer; // количество 

   s: real; // сумма 

   mes: string[255]; // сообщение 

begin

   cena := StrToFloat(Form1.Edit1.Text);

   kol := StrToInt(Forml.Edit2.Text);

   s := cena * kol;

   if s > 500 then

       begin

           s := s * 0.9;

           mes := 'Предоставляется скидка 10%' + #13;

       end;

   mes := mes+ 'Стоимость покупки: ' + FloatToStrF(s,ffFixed,4,2) +' руб.';

   Forml.Label3.Caption := mes;

end;

// щелчок на кнопке Стоимость 

procedure TForml.ButtonlClick(Sender: TObject);

begin

   Summa; // вычислить сумму покупки 

end;

// нажатие клавиши в поле Количество 

procedure TForml.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

   case Key of

       '0' .. '9',#8: ; // цифры и клавиша <Backspace> 

       #13: Summa; // вычислить стоимость покупки 

       else Key := Chr(0); // символ не отображать 

   end;

end;

// нажатие клавиши в поле Цена

procedure TForm1.EditlKeyPress(Sender: TObject; var Key: Char);

begin

   case Key of

       '0' .. '9', #8 : ; // цифры и клавиша <Backspace> 

       #13: Form1.Edit2.SetFocus; // клавиша <Enter> 

       '.' ,'.' :

          begin

              if Key = '.' then Key:=',

              if Pos(',',Edit1.Text) <> 0 then Key:= Chr(0);

          end;

       else // все остальные символы запрещены 

           Key := Chr(0);

   end;

end;

end.

Компиляция

   Программа, представленная в виде инструкций языка программирования, называется исходной программой. Она состоит из инструкций, понятных человеку, но не понятных процессору компьютера. Чтобы процессор смог выполнить работу в соответствии с инструкциями исходной программы, исходная программа должна быть переведена на машинный язык — язык команд процессора. Задачу преобразования исходной программы в машинный код выполняет специальная программа — компилятор. Компилятор, схема работы которого приведена на рис., выполняет последовательно две задачи:

1. Проверяет текст исходной программы на отсутствие синтаксических ошибок.

2. Создает (генерирует) исполняемую программу — машинный код.

   Следует отметить, что генерация исполняемой программы происходит только в том случае, если в тексте исходной программы нет синтаксических ошибок. Генерация машинного кода компилятором свидетельствует лишь о том, что в тексте программы нет синтаксических ошибок. Убедиться, что программа работает правильно можно только в процессе ее тестирования — пробных запусках программы и анализе полученных результатов. Например, если в программе вычисления корней квадратного уравнения допущена ошибка в выражении (формуле) вычисления дискриминанта, то, даже если это выражение будет синтаксически верно, программа выдаст неверные значения корней.

Язык программирования

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

  •  инструкцию языка (:=, if, while, for);
  •  переменную;               
  •  константу;
  •  арифметическую (+,  -, *, /) или логическую (and, or, not) операцию;
  •  подпрограмму (процедуру или функцию);
  •  отмечать начало (procedure, function) или конец раздела (end) программы и т.д.

Тип данных

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

   Целый тип

   Язык Delphi поддерживает семь целых типов данных: Shortint, Smallint, Longint, Int64, Byte, Word и Longword. Object Pascal поддерживает и наиболее универсальный целый тип – Integer, который эквивалентен Longint.

   Целые числа могут записываться не только в десятичной форме, но и в шестнадцатеричной. Для этого перед началом числа ставится символ $, а в качестве цифр, соответствующих числам от 10 до 15, используются буквы A-F.

$FF

$00007a

   Вещественный тип.  

   Язык Delphi поддерживает шесть вещественных типов: Real48, Single, Double, Extended, Comp, Currency. Типы различаются между собой диапазоном допустимых значений, количеством значащих цифр и количеством байтов, необходимых для хранения данных в памяти компьютера. Object Pascal поддерживает и наиболее универсальный вещественный тип – Real, который эквивалентен Double.

   В таких числах допускается также дополнительно указывать символ е (или Е), за которым следует число, сообщающее, что левую часть дополнительно надо умножить на 10 в соответствующей степени.   

   Например:

   Запись 2е+5 означает 2, умноженное на 10 в степени 5 (200000);

   Запись 31.4Е-1 означает 31,4, умноженное на 10 в степени -1 (3,14).

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

   Символьный тип.

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

   Язык Delphi поддерживает два символьных типа: AnsiChar и WideChar;

  •  тип AnsiChar — это символы в кодировке ANSI, которым соответствуют числа в диапазоне от 0 до 255;
  •  тип WideChar — это символы в кодировке Unicode, им соответствуют числа от 0 до 65 535.

   Строковый тип

   Последовательность символов, заключенная в одиночные кавычки, называется строкой (тип String — зарезервированное слово). Например:

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

Если требуется поместить сам символ одиночной кавычки внутрь строки, его надо повторить дважды:

'это   ' '   -  символ одиночной кавычки.

   Язык Delphi поддерживает три строковых типа: ShortString, LongString, WideString.

  •  тип ShortString представляет собой статически размещаемые в памяти компьютера строки длиной от 0 до 255 символов (этот тип введен для совместимости со старыми версиями);
  •  тип AnsiString — 231 (2 Гбайт) символов, относящихся к типу AnsiChar (данный строковый тип совпадает со стандартным типом string);
  •  тип WideString представляет(230 символов типа WideChar) собой динамически размещаемые в памяти строки, длина которых ограничена только объемом свободной памяти. Каждый символ строки типа WideString является Unicode-символом.

   Логический тип.

   Логическая величина может принимать одно из двух значений True (истина) или False (ложь). В языке Delphi логические величины относят к типу Boolean.

   Переменная.

   Переменная — это область памяти, в которой находятся данные, которыми оперирует программа. Когда программа манипулирует с данными, она, фактически, оперирует содержимым ячеек памяти, т. е. переменными. Чтобы программа могла обратиться к переменной (области памяти), например, для того, чтобы получить исходные данные для расчета по формуле или сохранить результат, переменная должна иметь имя. Имя переменной придумывает программист. В качестве имени переменной можно использовать последовательность из букв латинского алфавита, цифр и некоторых специальных символов. Первым символом в имени переменной должна быть буква. Пробел в имени переменной использовать нельзя.

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

   Команда описания переменных в Паскале записывается так:

   var имя-переменной:   тип-переменной;

   Слово var — ключевое. В качестве имени переменной выступает любой допустимый идентификатор, если он не был описан ранее и не является зарезервированным словом, а в качестве типа — одно из названий допустимых типов. Объявлять переменные разрешается только вне логических блоков begin/end.

   Константы

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

   В языке Delphi существует два вида констант: обычные и именованные.

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

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

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

   Строковые и символьные константы Строковые и символьные константы заключаются в кавычки. Ниже приведены примеры строковых констант:

‘Язык программирования’

‘2.4’

‘Д’

   Логические константы. Логическое высказывание (выражение) может быть либо истинно, либо ложно. Истине соответствует True, значению ложь – False.

   Именованная константа Именованная константа – имя (идентификатор), которое в программе используется вместо самой константы. Именованная константа должна быть объявлена. В общем виде объявления именованной константы выглядит следующим образом:

   Константа = значение

где:

  •  константа — имя константы;
  •  значение — значение константы.

   Именованные константы объявляются в программе в разделе объявления констант, который начинается словом const. Ниже приведен пример объявления именованных констант (целой, строковой и дробной).

const

   Bound = 10;

   Title = 'Скорость бега';

   pi = 3.1415926;

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

  •  125 — константа целого типа;
  •  — константа вещественного типа;
  •  ' выполнить ' — строковая константа;
  •  ' \' — символьная константа.

   Инструкция присваивания.

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

   Имя := Выражение

   где имя – переменная, значение которой изменяется в результате выполнения инструкции присваивания;

   := - символ инструкции присваивания;

   Выражение – выражение, значение которого присваивается переменной, имя которой указано слева от символа инструкции присваивания.

   Выражение

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

   Математические выражения Для вычисления значений по формулам в Паскале применяются выражения, состоящие из операндов (данных, констант и переменных), связанных между собой арифметическими операциями. Каждая арифметическая операция имеет два операнда, расположенных слева и справа от знака операции.

Обозначение операции на Паскале

Назначение

+

-

*

/

div

mod

Сложение

Вычитание

Умножение

Деление

Целочисленное деление (результат имеет целый тип, а остаток отбрасывается)

Остаток от деления левого операнда на правый (для целых типов)

   Каждая арифметическая операция имеет свой приоритет (очередность выполнения). Операции с более высокими приоритетами выполняются в первую очередь. Операции с равными приоритетами выполняются слева направо. Более высокий приоритет имеют операции *,/, div, mod, меньший — операции + и -. Чтобы изменить порядок вычисления выражения, используют круглые скобки. 

   Логические выражения Для манипулирования логическими величинами True и False в Паскале имеются четыре операции.

Обозначение операции на Паскале

Назначение

And

Or

Хоr

Not

Логическое И. Результат равен True, если хотя бы один из операндов равен True, в противном случае результат равен False

Логическое ИЛИ. Результат равен True, если оба операнда равны True, в противном случае результат равен False

Исключающее ИЛИ. Результат равен True, если операнды не равны друг другу, в противном случае результат равен False

Отрицание. Имеет только один операнд, указываемый справа. Результат равен True, если значение операнда равно False, в противном случае результат равен False

   Операция not имеет наивысший приоритет, операция and — более низкий, операции or и хоr имеют самый низкий приоритет среди логических операций. Как и в случае с арифметическими выражениями, порядок вычисления логического выражения можно менять с помощью круглых скобок.

   Битовые выражения В Паскале имеется возможность выполнять операции над отдельными битами числа (которое представлено в машинном коде программы в виде одного или нескольких байтов). Если типы (длины) операндов битовых операций отличаются, то результат имеет тип, соответствующий типу данных самой короткой длины (в байтах). Результат вычисляется путем применения битовой операции к соответствующим парным битам каждого операнда.

Обозначение операции на Паскале

Назначение

And

Or

Хоr

Not

Shl

Shr

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

Битовое ИЛИ. Бит результата равен 1, если оба бита операндов равны 1, в противном случае итоговый бит равен О

Битовое исключающее ИЛИ. Бит результата равен 1, если соответствующие биты операндов не равны друг другу, в противном случае итоговый бит равен 0

Битовое отрицание. Операция имеет один операнд, указываемый справа. Бит результата равен 1, если бит операнда равен 0, в противном случае итоговый бит равен 0

Битовый сдвиг влево (младшие, правые биты заполняются нулями). Левый операнд побитно сдвигается влево на число битов, заданное правым операндом

Битовый сдвиг вправо (старшие, левые биты заполняются нулями). Левый операнд побитно сдвигается вправо на число битов, заданное правым операндом

   Операция not имеет наивысший приоритет, операции and, shl и shr — более низкий, операции or и хоr имеют приоритет, самый низкий среди битовых операций.

   Примеры выполнения битовых операций:

   Выражение 11110000 and 10111101 имеет значение 10110000

   Выражение 11110000 or 10111101 имеет значение 11111101

   Выражение 11110000 хоr 10111101 имеет значение 01001101

   Выражение not 11110000 имеет значение 00001111

   Выражение 00001111 shl 2 имеет значение 00111100

   Выражение 11101111 shr 3 имеет значение 00011101

   Строковые выражения Для строк определена только одна операция — сложение или сцепление, обозначаемая символом «+». Результатом является строка, полученная сцеплением левого и правого операндов.

   Выражение '* это' +' строка' +'!' имеет значение '* это строка!'

Стандартные функции

   Для выполнения часто встречающихся вычислений и преобразований язык Delphi предоставляет программисту ряд стандартных функций. Значение функции связано с ее именем. Поэтому функцию можно использовать в качестве операнда выражения, например в инструкции присваивания. Так, чтобы вычислить квадратный корень, достаточно записать Х:=Sqrt(n), где Sqrt — функция вычисления квадратного корня, n — переменная, которая содержит число, квадратный корень которого надо вычислить. Функция характеризуется типом значения и типом параметров. Тип переменной, которой присваивается значение функции, должен соответствовать типу функции. Точно так же тип фактического параметра функции, т. е. параметра, который указывается при обращении к функции, должен соответствовать типу формального параметра. Если это не так, компилятор выводит сообщение об ошибке.

   Математические функции Математические функции позволяют выполнять различные вычисления.

Функция

Значение

Abs(n)

Sqrt(n)

Sqr(n)

Sin(n)

Cos(n)

Arctan(n)

Exp(n)

Ln(n)

Random(n)

Абсолютное значение n

Квадратный корень из n

Квадрат n

Синус n

Косинус n 

Арктангенс n

Экспонента n

Натуральный логарифм n

Случайное целое число в диапазоне от 0 до n - 1

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

   где: а— величина угла в градусах;

          3.1415926 число П. Вместо дробной константы 3.1415926 можно использовать стандартную именованную константу Pi. В этом случае выражение пересчета угла из градусов в радианы будет выглядеть так: а*Pi/180.

   Функции преобразования. Функции преобразования наиболее часто используются в инструкциях, обеспечивающих ввод и вывод информации. Например, для того чтобы вывести в поле вывода диалогового окна значение переменной типа real, необходимо преобразовать число в строку символов, изображающую данное число. Это можно сделать при помощи функции FloatToStr, которая возвращает строковое представление значения выражения, указанного в качестве параметра функции.

Функция

Значение

Chr(n)

IntToStr(n)

FloatToStr(n)

FloatToStrF(n, f, k, m)

StrToInt(s)

StrToFloat(s)

Round(n)

Trunc(n)

Frac(n)

Int(n)

Символ, код которого равен n

Изображение целого числа n

Изображение вещественного n

Изображение вещественного n. При вызове функции указывают:

f- формат (способ изображения); k – точность (нужное общее количество цифр); m – количество цифр после десятичной точки

Целое, изображением которого является строка s

Вещественное, изображением которого является строка s

Целое, ближайшее к n

Целая часть от n

Дробная часть вещественного n

Целая часть вещественного n

   Использование функций

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

n := Round((x2-x1)/dx);

x1:= (-b + Sqrt(d)) / (2*а);

m := Random(10);

cena := StrToInt(Edit1.Text);

Edit2.Text := IntToStr(100);

mes := 'x1=' + FloatToStr(xl);

Ввод данных

   Наиболее просто программа может получить исходные данные из окна ввода или из поля редактирования (компонент Edit).

   Ввод из окна ввода

   Окно ввода — это стандартное диалоговое окно, которое появляется на экране в результате вызова функции inputBox. Значение функции inputBox — строка, которую ввел пользователь. В общем виде инструкция ввода данных с использованием функции inputBox выглядит так:

Переменная := InputBox(Заголовок, Подсказка, Значение);

   где:

  •  Переменная — переменная строкового типа, значение которой должно быть получено от пользователя;
  •  Заголовок — текст заголовка окна ввода; П подсказка — текст поясняющего сообщения;
  •  Значение — текст, который будет находиться в поле ввода, когда окно ввода появится на экране.

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

s:=InputBox('Фунты-килограммы','Введите вес в фунтах','0');

Пример окна ввода

   Если во время работы программы пользователь введет строку и щелкнет на кнопке ОК, то значением функции inputBox будет введенная строка. Если будет сделан щелчок на кнопке Cancel, то значением функции будет строка, переданная функции в качестве параметра значение.

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

s := InputBox('Фунты-килограммы','Введите вес в фунтах',' ');

funt := StrToFloat(s);

   Ввод из поля редактирования

   Поле редактирования — это компонент Edit. Ввод данных из поля редактирования осуществляется обращением к свойству Text.

Компонент Edit1 используется для ввода данных

   На рис. приведен вид диалогового окна программы пересчета веса из фунтов в килограммы. Компонент Editl используется для ввода исходных данных. Инструкция ввода данных в этом случае будет иметь вид:

Funt := StrToFloat(Editl.Text);

Вывод результатов

   Наиболее просто программа может вывести результат своей работы в окно сообщения или в поле вывода (компонент Label) диалогового окна.

   Вывод в окно сообщения

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

   Процедура ShowMessage выводит на экран окно с текстом и командной кнопкой ОК.

   В общем виде инструкция вызова процедуры ShowMessage выглядит так:

ShowMessage(Сообщение);

   где сообщение — текст, который будет выведен в окне.

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

ShowMessage('Введите вес в фунтах.');

Пример окна сообщения

   Следует обратить внимание на то, что в заголовке окна сообщения, выводимого процедурой ShowMessage, указано название приложения, которое задается на вкладке Application окна Project Options. Если название приложения не задано, то в заголовке будет имя исполняемого файла.

   Функция MessageDig более универсальная. Она позволяет поместить в окно с сообщением один из стандартных значков, например "Внимание", задать количество и тип командных кнопок и определить, какую из кнопок нажал пользователь. На рис. приведено окно, выведенное в результате выполнения инструкции

r:=MessageDlg('Файл '+ FName + ' будет удален.', mtWarning, [mbOk,mbCancel] , 0) ;

Пример окна сообщения

   Значение функции MessageDlg — число, проверив значение которого, можно определить, выбором какой командной кнопки был завершен диалог. В общем виде обращение к функции MessageDig выглядит так:

Выбор: = MessageDlg( Сообщение, Тип, Кнопки, КонтекстСправки)

   где:

  •  Сообщение — текст сообщения;
  •  Тип — тип сообщения. Сообщение может быть информационным, предупреждающим или сообщением о критической ошибке. Каждому типу сообщения соответствует определенный значок. Тип сообщения задается именованной константой (табл.);

   Кнопки — список кнопок, отображаемых в окне сообщения. Список может состоять из нескольких разделенных запятыми именованных констант (табл.). Весь список заключается в квадратные скобки.

Таблица. Константы функции MessageDlg

Константа

Тип сообщения

Значок

mtWarning

Внимание

mtError

Ошибка

mt Information

Информация

mtConfirmation

Подтверждение

mtCustom

Обычное

Без значка

Таблица. Константы функции MessageDlg

Константа

Кнопка

mbYes

Yes

mbNo

No

mbOK

OK

mbCancel

Cancel

mbHelp

Help

mb Abort

Abort

mbRetry

Retry

mblgnore

Ignore

mbAll

All

   Например, для того чтобы в окне сообщения появились кнопки ОК и Cancel, список Кнопки должен быть таким:

[mbOK,mbCancel]

   Кроме приведенных констант можно использовать константы: mbokcancel, mbYesNoCancel и mbAbortRetryIgnore. Эти константы определяют наиболее часто используемые в диалоговых окнах комбинации командных кнопок.

   контекстСправки — параметр, определяющий раздел справочной системы, который появится на экране, если пользователь нажмет клавишу <F1>. Если вывод справки не предусмотрен, то значение параметра КонтекстСправки должно быть равно нулю.

   Значение, возвращаемое функцией MessageDig (табл.), позволяет определить, какая из командных кнопок была нажата пользователем.

Таблица. Значения функции MessageDlg

Значение функции MessageDig

Диалог завершен нажатием кнопки

mrAbort

Abort

mrYes

Yes

mrOk

Ok

mrRetry

Retry

mrNo

No

mrCancel

Cancel

mrIgnore

Ignore

mrAll

All

   Вывод в поле диалогового окна

   Часть диалогового окна, предназначенная для вывода информации, называется полем вывода, или полем метки. Поле вывода — это компонент Label. Содержимое поля вывода определяется значением свойства Caption. Изменить значение свойства Caption, как и большинства свойств других компонентов, можно как во время разработки формы приложения, так и во время работы программы. Для того чтобы во время работы программы изменить содержимое поля вывода, например, вывести в поле результат работы программы, нужно присвоить свойству новое значение. На рис. изображено диалоговое окно программы пересчета веса из фунтов в килограммы. Окно содержит два компонента Label. Компонент Label1 обеспечивает вывод информационного сообщения, компонент Label2 — вывод результата работы программы.

Поле Label2 предназначено для вывода результата работы программы

   Свойство Caption символьного типа. Поэтому для того, чтобы во время работы программы вывести в поле метки числовое значение, нужно преобразовать число в строку, например, При при помощи фуекции FloatToStr или IntToStr. Ниже в качестве примера приведена инструкция из программы пересчета веса из фунтов в килограммы, которая используется для вывода результата расчета.

Label2.Caption:= FloatToStr(kg)+' кг';

Процедуры и функции

   При программировании в Delphi работа программиста заключается в основном в разработке процедур (подпрограмм) обработки событий. При возникновении события автоматически запускается процедура обработки события, которую и должен написать программист. Задачу вызова процедуры обработки при возникновении соответствующего события берет на себя Delphi.

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

   Структура процедуры

   Процедура начинается с заголовка, за которым следуют: П раздел объявления констант;

  •  раздел объявления типов;
  •  раздел объявления переменных;
  •  раздел инструкций.

   В общем виде процедура выглядит так:

procedure Имя (СписокПараметров);

   const

       // здесь объявления констант

   type

       // здесь объявления типов var

       // здесь объявления переменных

begin

       // здесь инструкции программы

end;

   Заголовок процедуры состоит из слова procedure, за которым следует имя процедуры, которое используется для вызова процедуры, активизации ее выполнения. Если у процедуры есть параметры, то они указываются после имени процедуры, в скобках. Завершается заголовок процедуры символом "точка с запятой". Если в процедуре используются именованные константы, то они объявляются в разделе объявления констант, который начинается словом const.

   За разделом констант следует раздел объявления типов, начинающийся словом type.

   После раздела объявления типов идет раздел объявления переменных, в котором объявляются (перечисляются) все переменные, используемые в программе. Раздел объявления переменных начинается словом var.

   За разделом объявления переменных расположен раздел инструкций. Раздел инструкций начинается словом begin и заканчивается словом end, за которым следует символ "точка с запятой". В разделе инструкций находятся исполняемые инструкции процедуры.

   Ниже в качестве примера приведен фрагмент программы вычисления стоимости покупки — процедура Summa.

procedure Summa;

   var

      cena: real; // цена 

      kol: integer; // количество 

      s: real; // сумма 

      mes: string[255]; // сообщение

begin

   cena := StrToFloat(Form1.Edit1.Text);

   kol := StrToInt(Form1.Edit2.Text);

   s := cena * kol;

   if s > 500 then

       begin

           s := s * 0.9;

           mes := 'Предоставляется скидка 10%' + #13;

       end;

   mes := mes+ 'Стоимость покупки: '+ FloatToStrF(s,ffFixed,4,2) +' руб.';

   Forml.Label3.Caption := mes;

end;

   Структура функции

   Функция начинается с заголовка, за которым следуют разделы объявления констант, типов и переменных, а также раздел инструкций. Объявление функции в общем виде выглядит следующим образом:

function Имя (СписокПараметров) : Тип;

   const // начало раздела объявления констант 

   type // начало раздела объявления типов 

   var // начало раздела объявления переменных 

   begin // начало раздела инструкций 

       result := Значение; // связать с именем функции значение 

   end;

   Заголовок функции начинается словом function, за которым следует имя функции. После имени функции в скобках приводится список параметров, за которым через двоеточие указывается тип значения, возвращаемого функцией (тип функции). Завершается заголовок функции символом "точка с запятой". За заголовком функции следуют разделы объявления констант, типов и переменных.

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

   Ниже в качестве примера приведена функция FuntToKg, которая пересчитывает вес из фунтов в килограммы:

// Пересчет веса из фунтов в килограммы

function FuntToKg(f:real):real;

   const

       // в России 1 фунт равен 409,5 гр.

       К=0.4095; // коэф. Пересчета 

begin

   result:=f*K;

end;

Запись инструкций программы

   Одну инструкцию от другой отделяют точкой с запятой или, другими словами, в конце каждой инструкции ставят точку с запятой. Хотя в одной строке программы можно записать несколько инструкций, как правило, каждую инструкцию программы записывают в отдельной строке. Некоторые инструкции (if, case, repeat, while и др.) принято записывать в несколько строк, используя для выделения структуры инструкции отступы. Ниже приведен пример инструкции, которая записана в несколько строк и с использованием отступов:

if d >= 0 then

   begin

       x1:=(-b+Sqrt(d))/(2*a);

       x2:=(-b-Sqrt(d))/(2*a);

       ShowMessage('x1='+FloatToStr(xl) + 'x2='+FloatToStr(x2)) ;

   end

else

   ShowMessage('Уравнение не имеет корней.');

   

   Следует обратить внимание на то, что слова then и else записаны одно под другим (с одинаковым отступом) и с отступом относительно слова if. Слово end располагается под словом begin, а инструкции между begin и end размещаются одна под другой, но с отступом относительно begin.

   Приведенную выше инструкцию можно записать и так:

if d >= 0 then begin

x1:=(-b+Sqrt(d))/(2*a);

x2:=(-b-Sqrt(d))/(2*a);

ShowMessage('x1='+FloatToStr(x1)+'x2='+FloatToStr(x2));

end

else ShowMessage('Уравнение не имеет корней.');

   Однако первый вариант лучше, т. к. он отражает структуру алгоритма, реализуемого инструкцией. С первого взгляда видна группа инструкций, которая будет выполнена, если условие d >= о выполняется (в этом случае будут вычислены значения переменных xl и х2), и инструкция, которая будет выполнена, если условие d >=o не выполняется.

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

   Ниже приведен пример записи выражения в несколько строк:

st:= 'Корни уравнения'+ #13

+'x1=' + FloatToStr(x1)+ #13 +'х2=' + FloatToStr(x2);

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

x1:=(-b+Sqrt(d))/(2*a);

и

x1 := (-b + Sqrt(d)) / (2 * а);

   Очевидно, что второй вариант воспринимается лучше.

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

var

{ коэффициенты уравнения }

a:real; // при второй степени неизвестного

b:real; // при первой степени неизвестного

с:real; // при нулевой степени неизвестного

{ корни уравнения } x1,x2:real;

Стиль программирования

   Работая над программой, программист, особенно начинающий, должен хорошо представлять, что программа, которую он разрабатывает, предназначена, с одной стороны, для пользователя, с другой — для самого программиста. Текст программы нужен прежде всего самому программисту, а также другим людям, с которыми он совместно работает над проектом. Поэтому для того, чтобы работа была эффективной, программа должна быть легко читаемой, ее структура должна соответствовать структуре и алгоритму решаемой задачи. Как этого добиться? Надо следовать правилам хорошего стиля программирования. Стиль программирования — это набор правил, которым следует программист (осознано или потому, что "так делают другие") в процессе своей работы. Очевидно, что хороший программист должен следовать правилам хорошего стиля. Хороший стиль программирования предполагает:

  •  использование комментариев;
  •  использование несущих смысловую нагрузку имен переменных, процедур и функций;
  •  использование отступов;
  •  использование пустых строк.

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

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

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

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

Контрольные вопросы

  1.  Что представляет собой программа?
  2.  Перечислите типы данных и дайте их характеристики.
  3.  Понятие переменной.
  4.  Понятие константы.
  5.  Как используется инструкция присваивания?
  6.  Понятие выражения. Типы выражений.
  7.  Стандартные функции
  8.  Функции преобразования.

Резюме

  1.  Программа на Delphi представляет собой последовательность инструкций, которые довольно часто называют операторами. Одна инструкция от другой отделяется точкой с запятой.
  2.  Программа может оперировать данными различных типов: целыми и дробными числами, символами, строками символов, логическими величинами.
  3.  Переменная — это область памяти, в которой находятся данные, которыми оперирует программа.
  4.  Константы — фиксированные значения, для которых определено имя.
  5.  Если в программе надо выполнить вычисление, то нужно использовать инструкцию присваивания.
  6.  Выражение состоит из операндов и операторов. Операторы находятся между операндами и обозначают действия, которые выполняются над операндами. В качестве операндов выражения можно использовать: переменную, константу, функцию или другое выражение.

Домашнее задание

   Повторить TurboPascal.


 

А также другие работы, которые могут Вас заинтересовать

60163. Література бароко, класицизму, просвітництва 39.5 KB
  Мета: узагальнити вивчений матеріал, повторити найважливіші літературні твори зазначених напрямів, розвивати логічне мислення, навички роботи у групі, вміння чітко аргументувати свій вибір, сприяти підвищенню інтересу до вивчення літератури.
60164. Сценарий к 8 марта «Самой любимой и родной мамочке» 3.82 MB
  Милых мам и бабушек в этот светлый день Поздравлять и радовать никому не лень. Все вокруг стараются им цветы дарить, Поздравленья разные чаще говорить. (2 раза) Все преображается в этот день кругом, Женскими улыбками полон каждый дом.
60166. Дніпропетровщина – мій рідний край 142.5 KB
  Центр області – місто Дніпропетровськ. Географія Протяжність області з півночі на південь 130 кілометрів із заходу на схід – 300 кілометрів. Водойми В області протікає 217 річок з них 55 довжиною понад 25 км.
60167. Моя творчість тобі, рідний краю! Позакласний захід 170.5 KB
  Хто вони творчі люди Які вони талановиті діти Чи маємо ми змогу всі бути талановитими Як можемо розвивати свої здібності щоб розкрити природні таланти Саме на ці питання і спробуємо знайти відповідь на цьому уроці.
60168. Година спілкування, Україна – моя Батьківщина 142.84 KB
  Мета: розширювати та поглиблювати знання учнів про рідну Батьківщину, учити їх висловлювати своє ставлення до держави; формувати громадянські уявлення та патріотичні почуття приналежності до української нації...
60169. Жінки в долі та творчості Т.Шевченка 104.5 KB
  Щось до лона пригортає і з туманом розмовляє: Виходить Ганна з дитиною на руках: Ой тумане тумане Мій латаний талане Чому мене не сховаєш Отут серед лану Чому мене не задавиш У землю не вдавиш...
60170. Пожежонебезпечні і вибухонебезпечні речовини та матеріали 141 KB
  Міні-вистава Небазпечні іграшки Дійові особи: Хлопчики : Миколка Василько Андрійко Бабуся Марина Дівчинка Настя Два лікарі Міліціонер Скверик.
60171. Круглий стіл: «Попередження насильства в сімї» 148.5 KB
  Мета: сформулювати уявлення про насильство та розвинути знання про методи захисту від насильства, вміти протистояти насильству; висловлювати своє відношення до можливих випадків насильства.