Реферат: Основы программирования


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

программированиепрограмма алгоритм


Программа. Этапыразработки программы. Спецификация. Разработка алгоритма. Кодирование. Отладка.Тестирование. Создание справочной системы. Создание установочного диска. Алгоритми программа. Компиляция. Язык программирования Delphi. Тип данных. Переменная. Константы.Инструкция присваивания. Выражение. Тип выражения. Выполнение инструкции присваивания.Стандартные функции. Математические функции. Функции преобразования. Ввод данных.Вывод результатов. Процедуры и функции. Структура процедуры. Структура функции.Запись инструкций программы. Стиль программирования

Программа

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

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

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

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

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

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

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

4. Отладка.

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

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

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

Спецификация

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

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

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

Кодирование

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

Отладка

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

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

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

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

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

Создание установочногодиска

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

Алгоритм и программа

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

/>

Рис. 1. Основные символы, используемыедля представления алгоритма в виде блок-схемы

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

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

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


Компиляция

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

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

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

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

/>

Рис. 2. Схема работы компилятора

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

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

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

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

Каждая инструкциясостоит из идентификаторов. Идентификатор может обозначать:

· Инструкцию языка(:=, if, while, for);

· переменную;

· константу(целое или дробное число);

· арифметическую(+, -,*,/) или логическую (and, or, not) операцию;

· подпрограмму(процедуру или функцию);

· отмечатьначало (procedure, function) или конец (end) подпрограммы ИЛИ блока (begin, end).

Тип данных

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

Целый тип

Язык Delphi поддерживаетсемь целых типов данных: shortint, smailint, Longint, Int64, Byte, word и Longword,описание которых приведено в табл. 1.


Таблица 1. Целые типы

Тип Диапазон Формат Shortint -128-127 8 битов Smallint -32 768 — 32 767 16 битов Longint -2 147 483 648 — 2 147 483 647 32 бита Int64

-263 — 263 — 1

64 бита Byte 0-255 8 битов, беззнаковый Word 0-65 535 16 битов, беззнаковый Longword 0 — 4 294 967 295 32 бита, беззнаковый

Object Pascalподдерживает и наиболее универсальный целый тип — Integer, который ЭквивалентенLongint.

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

Язык Delphi поддерживает шесть вещественныхтипов: Real48, single, Double, Extended, comp, Currency. Типы различаются между собой диапазоном допустимых значений,количеством значащих цифр и количеством байтов, необходимых для хранения данныхв памяти компьютера (табл. 2).

Таблица 2. Вещественные (дробные) типы

Тип

Диапазон

Значащих цифр

Байтов

Real48

2.9x 10-39-1.7x1038

11-12 06 Single

1.5 x 10-45-3.4х 1038

7-8 04 Double

5.0x10-324 -1.7x10308

15-16 08 Extended

3.6x10-4951 -1.1 х104932

19-20 10 Comp

263+1 — 263-1

19-20 08 Currency -922 337 203 685 477.5808 --922 337 203 685 477.5807 19-20 08

Язык Delphi поддерживаети наиболее универсальный вещественный тип — Real, который эквивалентен Double.


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

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

· тип Ansichar— это символы в кодировке ANSI, которым соответствуют числа в диапазоне от 0 до255;

· тип widechar— это символы в кодировке Unicode, им соответствуют числа от 0 до 65 535.

Object Pascalподдерживает и наиболее универсальный символьный тип — Char, который эквивалентенAnsichar.

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

Язык Delphi поддерживаеттри строковых типа: shortstring, Longstring

· WideString:

· тип shortstringпредставляет собой статически размещаемые в памяти компьютера строки длиной от 0до 255 символов;

· тип Longstringпредставляет собой динамически размещаемые в памяти строки, длина которых ограниченатолько объемом свободной памяти;

· тип WideStringпредставляет собой динамически размещаемые в памяти строки, длина которых ограниченатолько объемом свободной памяти. Каждый символ строки типа WideString является Unicode-символом.

В языке Delphiдля обозначения строкового типа допускается использование идентификатора string.Тип string эквивалентен типу shortstring.

В языке Delphiдля обозначения строкового типа допускается использование идентификатора string.Тип string эквивалентен типу shortstring.

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

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


Переменная

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

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

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

Следует обратитьвнимание на то, что компилятор языка Delphi не различает прописные и строчные буквыв именах переменных, поэтому имена SUMMA, Summa и summa обозначают одну и ту жепеременную.

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

ах2 + bх + с =0

вполне логичноприсвоить имена а, b, с, x1 и х2. Другой пример. Если в программе есть переменные,предназначенные для хранения суммы покупки и величины скидки, то этим переменнымможно присвоить имена TotalSumm и Discount или ObSumma и Skidka.

В языке Delphiкаждая переменная перед использованием должна быть объявлена. С помощью объявленияустанавливается не только факт существования переменной, но и задается ее тип, чемуказывается и диапазон допустимых значений.

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

Имя: тип;

где:

· имя —имя переменной;

· тип —тип данных, для хранения которых предназначена переменная.

Пример:

а: Real;b: Real; i: Integer;

В приведенныхпримерах объявлены две переменные типа real и одна переменная типа integer.

В тексте программыобъявление каждой переменной, как правило, помещают на отдельной строке.

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

а,b, с: Real;x1,x2: Real;

Константы

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

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

Числовые константы

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

Ниже приведеныпримеры числовых констант:

123 0.0

-524.03 0

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

В табл. 3 приведеныпримеры чисел, записанных в обычной форме, в алгебраической форме и форме с плавающейточкой.

Таблица 3. Примеры записи дробных чисел

Число Алгебраическая форма Форма с плавающей точкой

1 000 000

-123.452

0,0056712

1х106

-1,23452x102

5,6712х10-3

1 .0000000000Е+06

-1 .2345200000Е+02

5,6712000000Е-03

Строковые и символьныеконстанты

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

'Язык программированияDelphi1 'Delphi 6'

'2.4'

'Д'

Здесь следуетобратить внимание на константу ' 2.4'. Это именно символьная константа, т. е. строкасимволов, которая изображает число «две целые четыре десятых», а не число2,4.

Логические константы

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

Именованная константа

Именованная константа— это имя (идентификатор), которое в программе используется вместо самой константы.

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

константа = значение;

где:

· константа— имя константы;

· значение— значение константы.

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

 

const

Bound= 10;

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

pi = 3.1415926;

После объявленияименованной константы в программе вместо самой константы можно использовать ее имя.

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

· 125 —константа целого типа;

· 0.0 —константа вещественного типа;

· ' выполнить' — строковая константа;

· ' \' —символьная константа.

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

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

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

В общем виде инструкцияприсваивания выглядит так: Имя: = Выражение;

где:

· Имя —переменная, значение которой изменяется в результате выполнения инструкции присваивания;

· : = —символ инструкции присваивания.

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

Пример:

Surama:= Сеnа * Kol; Skidka:= 10; Found := False;

 

Выражение

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

 

Таблица 1.4. Алгебраические операторы

Оператор Действие + Сложение - Вычитание * Умножение / Деление DIV Деление нацело MOD Вычисление остатка от деления

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

Результат примененияоператоров +, -, * и / очевиден.

Оператор DIV позволяетполучить целую часть результата деления одного числа на другое. Например, значениевыражения is DIV i равно 2.

Оператор MOD,деление по модулю, позволяет получить остаток от деления одного числа на другое.Например, значение выражения 15 MOD 7 равно 1.

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

123 0.001 i+1

А + В/С Summa*0.75(В1+ВЗ+ВЗ)/3 Cena MOD 100

При вычислениизначений выражений следует учитывать, что операторы имеют разный приоритет. Таку операторов *, /, DIV, MOD более высокий приоритет, чем у операторов + и -.

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

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

(r1+r2+r3)/(r1*r2*r3)

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


Тип выражения

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

Важно уметь определятьтип выражения. При определении типа выражения следует иметь в виду, что тип константыопределяется ее видом, а тип переменной задается в инструкции объявления. Например,константы о, 1 и -512 — целого типа (integer), а константы 1.0, 0.0 и 3.2Е-05 —вещественного типа (real).

В табл. 5 приведеныправила определения типа выражения в зависимости от типа операндов и вида оператора.

Таблица 5. Правила определения типа выражения

Оператор Тип операндов Тип выражения *, +, - Хотя бы один из операндов real real *, +, - Оба операнда integer integer / real или integer Всегда real DIV, MOD Всегда integer Всегда integer

 

Выполнение инструкцииприсваивания

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

1. Сначала вычисляетсязначение выражения, которое находится справа от символа инструкции присваивания.

2. Затем вычисленноезначение записывается в переменную, имя которой стоит слева от символа инструкцииприсваивания.

Например, в результатевыполнения инструкций:

· i:=0;— значение переменной i становится равным нулю;

· а:=b+с;— значением переменной а будет число, равное сумме значений переменных ь и с;

· j :=j+1;— значение переменной j увеличивается на единицу.

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

Так, например,если переменные i и n имеют тип integer, а переменная d — тип real, то инструкции

i:=n/10; i:=1.0;

неправильные,а инструкция

d:=i+1; правильная.

Во время компиляциивыполняется проверка соответствия типа выражения типу переменной. Если тип выраженияне соответствует типу переменной, то компилятор выводит сообщение об ошибке:

Incompatible types… and ...

где вместо многоточийуказывается тип выражения и переменной. Например, если переменная п целого типа,то инструкция n: = m/2 неверная, поэтому во время компиляции будет выведено сообщение:

Incompatibletypes 'Integer' and.'Extended'.

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

Для выполнениячасто встречающихся вычислений и преобразований язык Delphi предоставляет программистуряд стандартных функций.

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

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

Математическиефункции

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

Таблица 6. Математические функции

Функция Значение Аbs (n) Абсолютное значение n Sqrt (n) Квадратный корень из n Sqr (n) Квадрат n Sin (n) Синус n Cos (n) Косинус n Arctan (n) Арктангенс n Ехр(n) Экспонента n Ln(n) Натуральный логарифм n Rardom(n) Случайное целое число в диапазоне от 0 до n- 1

Величина углатригонометрических функций должна быть выражена в радианах. Для преобразования величиныугла из градусов в радианы используется формула (а*з.141525б)/180, где: а— величинаугла в градусах; 3.1415926 — число л. Вместо дробной константы 3.1415926 можно использоватьстандартную именованную константу PI. В этом случае выражение пересчета угла изградусов в радианы будет выглядеть так: a*Pi/180.

Функции преобразования

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

Например, инструкцияLabel1.caption:= FioatTostr(x) выводит значение переменной х в поле Label1.

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

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

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(Заголовок, Подсказка, Значение);

где:

· Переменная— переменная строкового типа, значение которой должно быть получено от пользователя;

· Заголовок— текст заголовка окна ввода; Подсказка — текст поясняющего сообщения;

· Значение— текст, который будет находиться в поле ввода, когда окно ввода появится на экране.

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

s:=InputBox('Пример', 'Введите что-нибудь','Привет');

/>

Рис.3. Пример окна ввода

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

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

s:=StrToInt(InputBox('Пример', 'Введите что-нибудь','10'));


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

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

/>

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

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

s := Edit1.Text;

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

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

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

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

Вывести на экранокно с сообщением можно при помощи процедуры ShowMessage или функции MessageDlg.

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

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

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

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

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

ShowMessage('Примерпроцедуры.');

/>

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

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

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

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

/>

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

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

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

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

где:

· Сообщение— текст сообщения;

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

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

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

Константа Тип сообщения mtWarning Внимание mtError Ошибка mtInformation Информация mtConfirmation Подтверждение mtCustom Обычное

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

Константа Кнопка Константа Кнопка mbYes Yes mb Abort Abort mbNo No mbRetry Retry mbOK OK mblgnore Ignore mbCancel Cancel mbAll All mbHelp Help

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

[mbOK,mbCancel]

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

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

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

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

Значение функции MessageDig Диалог завершен нажатием кнопки mrAbort Abort mrYes Yes mrOk Ok mrRetry Retry mrNo No mrCancel Cancel mrIgnore Ignore mrAll All

 

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

Часть диалоговогоокна, предназначенная для вывода информации, называется полем вывода, или полемметки. Поле вывода — это компонент Label.

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

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

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

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

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

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

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

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

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

· разделобъявления типов;

· разделобъявления переменных;

· разделинструкций.

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

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

const

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

type

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

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

begin

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

end;

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

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

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

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

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

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

procedureSumma;

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, которая пересчитывает вес из фунтов в килограммы:

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

functionFuntToKg(f:real):real;

const

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

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

begin

result:=f*K;

end;

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

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

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

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

if d >= 0thenbegin

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.

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

ifd >= 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;

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

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

Хороший стильпрограммирования предполагает:

· использованиекомментариев;

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

· использованиеотступов;

· использованиепустых строк.

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

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

Сводить понятиестиля программирования только к правилам записи текста программы было бы неверно.Стиль, которого придерживается программист, проявляется во время работы программы.Хорошая программа должна быть прежде всего надежной и дружественной по отношениюк пользователю.Надежность подразумевает, что программа, не полагаясь на «разумное»поведение пользователя, контролирует исходные данные, проверяет результат выполненияопераций, которые по какой-либо причине могут быть не выполнены, например, операцийс файлами. Дружественность предполагает хорошо спроектированные диалоговые окна,наличие справочной системы, разумное и предсказуемое, с точки зрения пользователя,поведение программы.

еще рефераты
Еще работы по информатике, программированию