Главная страница
Навигация по странице:

  • Управляющие структуры языка Delphi Точки выбора

  • Графические возможности Delphi Холст

  • Методы вычерчивания графических примитивов. Линия.

  • Использование битовых образов. Загрузка битового образа из ресурса программы.

  • Подключение файла ресурсов

  • делфи 1. Программа. Этапы разработки


    Скачать 187.37 Kb.
    НазваниеПрограмма. Этапы разработки
    Дата22.10.2022
    Размер187.37 Kb.
    Формат файлаdocx
    Имя файладелфи 1.docx
    ТипПрограмма
    #748906
    страница4 из 5
    1   2   3   4   5

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


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

    Объявление функции в общем виде выглядит следующим образом:

    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;

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


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

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

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

    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 >= 0 выполняется (в этом случае будут вычислены значения переменных x1 и х2), и инструкция, которая будет выполнена, если условие d >=0 не выполняется.

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

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

    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;
    Стиль программирования

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

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

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

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

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

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

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

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

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

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

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

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

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

    Управляющие структуры языка Delphi

    • Точки выбора

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

    • Условие

    В повседневной жизни условие обычно формулируется в виде вопроса, на который можно ответить Да или Нет. Например: | Величина сопротивления равна нулю? | Ответ правильный? | Сумма покупки больше 300 рублей?

    • Выбор. Инструкция if.

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

    • Инструкция case

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

    • Циклы. Инструкция for.

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

    • Инструкция while

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

    • Инструкция repeat

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

    • Инструкция goto

    Инструкции if и case используются для перехода к последовательности инструкций программы в зависимости от некоторого условия. Поэтому их иногда называют инструкциями условного перехода. Помимо этих инструкций управления ходом выполнения программы существует еще одна – инструкция безусловного перехода goto.
    Графические возможности Delphi

    • Холст

    Delphi позволяет программисту разрабатывать программы, которые могут выводить графику: схемы, чертежи, иллюстрации. | Программа выводит графику на поверхность объекта (формы или компонента Image). Поверхности объекта соответствует свойство canvas.

    • Карандаш

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

    • Кисть

    Кисть (canvas.Brush) используется методами, обеспечивающими вычерчивание замкнутых областей, например геометрических фигур, для заливки (закрашивания) этих областей. Кисть, как объект, обладает двумя свойствами, перечисленными в табл. 10.5. | Таблица 10.5. Свойства объекта TBrush (кисть).

    • Вывод текста

    Для вывода текста на поверхность графического объекта используется метод TextOut. Инструкция вызова метода TextOut в общем виде выглядит следующим образом: | Объект.Canvas.TextOut(x, у, Текст) | Где: | Объект – имя объекта, на поверхность которого выводится текст;

    • Методы вычерчивания графических примитивов. Линия.

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

    • Ломаная линия

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

    • Окружность и эллипс

    Метод Ellipse вычерчивает эллипс или окружность, в зависимости от значений параметров. | Инструкция вызова метода в общем виде выглядит следующим образом: | Объект.Canvas.Ellipse(x1,y1, х2,у2] | Где: | Объект – имя объекта (компонента), на поверхности которого выполняется вычерчивание;

    • Дуга

    Вычерчивание дуги выполняет метод Arc, инструкция вызова которого в общем виде выглядит следующим образом: | Объект.Canvas.Arc(x1,y1,х2,у2,х3,у3,х4,у4) | Где: | x1, y1, х2, у2 – параметры, определяющие эллипс (окружность), частью которого является вычерчиваемая дуга;

    • Прямоугольник

    Прямоугольник вычерчивается методом Rectangle, инструкция вызова которого в общем виде выглядит следующим образом: | Объект.Canvas.Rectangle(x1, y1,x2, y2) | Где: | Объект – имя объекта (компонента), на поверхности которого выполняется вычерчивание;

    • Многоугольник. Сектор.

    Метод Polygon вычерчивает многоугольник. В качестве параметра метод получает массив типа TPoint. Каждый элемент массива представляет собой запись, поля (х,у) которой содержат координаты одной вершины многоугольника.

    • Точка

    Поверхности, на которую программа может осуществлять вывод графики, соответствует объект Canvas. Свойство pixels, представляющее собой двумерный массив типа TColor, содержит информацию о цвете каждой точки графической поверхности.

    • Вывод иллюстраций

    Наиболее просто вывести иллюстрацию, которая находится в файле с расширением .bmp, .jpg или .ico, можно при помощи компонента image, значок которого находится на вкладке Additional палитры (рис. 10.11). | Рис. 10.11. Значок компонента Image | В табл.

    • Битовые образы

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

    • Мультипликация

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

    • Метод базовой точки

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

    • Использование битовых образов. Загрузка битового образа из ресурса программы.

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

    • Создание файла ресурсов

    Для того чтобы воспользоваться возможностью загрузки картинки из ресурса, необходимо сначала создать файл ресурсов, поместив в него нужные картинки. | Файл ресурсов можно создать при помощи утилиты Image Editor (Редактор изображений), которая запускается выбором команды Image Editor меню Tools.

    • Подключение файла ресурсов

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

    • Просмотр мультипликации

    Теперь рассмотрим, как можно реализовать вывод в диалоговом окне программы простого "мультика", подобного тому, который можно видеть в диалоговом окне Установка связи при подключении к Internet. | Эффект бегущего между телефоном и компьютером красного квадратика достигается за счет того, что в диалоговое окно выводятся сменяющие друг друга картинки.

    1   2   3   4   5


    написать администратору сайта