Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА (Delphi-проект)

Теоретические вопросы для выполнения РГР

I. ВВЕДЕНИЕ В ТЕОРИЮ ПРОГРАММИРОВАНИЯ

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

 В программировании выделяют языки различных уровней: машинные (низкоуровневые), Ассемблер и языки высокого уровня (алгоритмические языки)  [Pascal, Basic, Fortran, Java и т. д.]. 

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

 Действия, выполняемые машинными командами, элементарны: например, переслать содержимое одной ячейки памяти в другую, сложить содержимое двух ячеек и т. д. Между тем запись программы с помощью таких действий требует больших трудозатрат. На машинном языке очень неудобна отладка программы, так как, например, добавление всего лишь одной команды в программу может вызывать изменение большого количества адресов (например, если память компьютера составляет 1 Мбайт, то программист должен помнить обо всем, что записано примерно в 1000000 ячеек памяти).

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

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

Рассмотрим пример записи в процессорный регистр ax числа 100 (регистр – внутренняя ячейка памяти самого процессора – 32 разряда).

Машинная команда:

102/184/100/0 (в десятичной сист. счисления)

0110000(то же в двоичной сист. счисления)

Ассемблер: MOV ax,100.

Язык высокого уровня Pascal: Result := 100 .

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

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

Язык программирования высокого уровня и транслятор этого языка в машинные коды называют системой программирования.

Различают два вида трансляторов: интерпретаторы и компиляторы. Программа-интерпретатор переводит текст программы, составленный программистом, в машинные коды пооператорно без выхода из системы программирования, и при этом не создается исполнимый файл.

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

Языки программирования, которые позволяют писать программы на языках, понятных человеку (например, английский), а затем с помощью программы-транслятора переводить их в машинные коды, называются языками высокого уровня или алгоритмическими языками.

НЕ нашли? Не то? Что вы ищете?

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

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

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

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

Развитием процедурного программирования является объектно-ориентированное программирование, суть которого: сначала создаются объекты («каркас» - программы) в виде формы с кнопками, различными переключателями, полями, а затем каждому объекту формы приписывает отклик (набор операторов) на определенное событие, например, нажатие кнопки (Delphi, Visual Basic, Visual C++, Visual Java). 

Сущность объектно-ориентированного подхода к программированию

Основные идеи объектно-ориентированного подхода опираются на следующие положения:

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

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

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

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

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

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

Классы объектов часто удобно строить так, чтобы они образовывали иерархическую структуру. Например, класс “Студент”, описывающий абстрактного студента города Москвы (студент – учащийся вуза), может служить основой для построения классов “Студент МГУ”, “Студент РГУФК”, “Студент МИФИ” и т. д. Для всех классов наследуется общий признак – учащийся вуза.

Для каждого класса второго уровня есть отличительные черты, присущие только этому классу, например, представители класса “Студент РГУФК” изучают дисциплину “Теория и методика физической культуры”. Студенты МГУ этой дисциплины не изучают. В терминах объектно-ориентированного программирования это определяется как инкапсуляция. При этом указанная дисциплина может изучаться очно, заочно, экстерном (формы обучения). В терминах объектно-ориентированного программирования это определяется как полиморфизм.

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

При разработке интерфейса с пользователем программы могут использовать объекты общего класса “Окно” и объекты классов специальных окон, например, окон информационных сообщений, окон ввода данных и т. п. В таких иерархических структурах один класс может рассматриваться как базовый для других, производных от него классов. Объект производного класса обладает всеми свойствами базового класса (наследует их) и некоторыми собственными свойствами (инкапсулирует их), которые напрямую недоступны из вне; он может реагировать на те же типы сообщений от других объектов, что и объект базового класса и на сообщения, имеющие смысл только для производного класса. Например, во время движения объекта-автомобиля объект-водитель может воздействовать только на ограниченный набор органов управления (рулевое колесо, педали газа, сцепления и тормоза, рычаг переключения передач) и ему недоступен целый ряд параметров, характеризующих состояние двигателя и автомобиля в целом. Очевидно, для того, чтобы продуктивно применять объектный подход для разработки программ, необходимы языки программирования, поддерживающие этот подход. Одним из первых таких языков стал язык SmallTalk, в котором все данные являются объектами некоторых классов, а общая система классов строится как иерархическая структура на основе предопределенных базовых классов.

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

I I. ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ СРЕДА DELPHI

Delphi — это среда быстрой разработки, в которой в качестве языка программирования используется объектно-ориентированный язык Object Pascal. В основе систем быстрой разработки (RAD-систем, Rapid Application Development — среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть рутинной работы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий.

Разработчик Delphi Borland Software Corporation (корпорация основана в 1983 г.) выпустила большое количество версий. Предметом нашего изложения будет одна из последних на момент написания учебного пособия - седьмая.

Borland Delphi 7 может работать в среде операционных систем от Windows 98 до Windows XP. Требования к компьютеру: процессор Pentium II 400 МГц и более выше, оперативная память - 128 Мбайт (рекомендуется 256 Мбайт), достаточное количество свободного дискового пространства - приблизительно 500 Мбайт.

Интерфейс (вид экрана монитора) после запуска среды Delphi 7 по-умолчанию представлен следующими окнами (рис. А1):

1. Главное окно — Delphi 7 (№ 1);

2. окно просмотра списка объектов (дерево объектов) — Object TreeView (№ 4);

3. окно редактора свойств объектов (инспектор объектов) — Object Inspector (№ 5);

4. окно формы — Form 1 (№ 6);

5. окно редактора кода — Unitl. pas (№ 7);.

Функциональное объединение всех окон еще называют интегрированной средой.

Рис. A1. Интегрированная среда разработки приложений Delphi после запуска: 1 –главное меню главного окна (File, Edit, Search, View, Project, Run, Component, Database, Tools, Window, Help); 2- закладка Standard библиотеки компонентов главного окна, 3- закладка System библиотеки компонентов главного окна, 4- окно просмотра списка объектов (дерево объектов) - Object TreeView, 5- окно редактора свойств объектов (инспектор объектов) - Object Inspector, 6- окно формы — Form 1, 7- окно редактора кода — Unitl. pas (№ 7)

Библиотека компонентов Delphi содержит набор (палитру) визуальных компонентов, объединенных в страницы. Каждая страница компонентов представлена закладкой (Standard, Additional, Win32,System и т. д.).

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

Окно редактора свойств объектов Object Inspector (инспектор объектов) состоит из двух разделов: Properties (свойства) и Events (события), представленные одноименными закладками. Инспектор объектов позволяет задавать свойства компонентов и обработчики событий. В терминологии визуального программирования объекты — это диалоговые окна и элементы управления (поля ввода и вывода, командные кнопки, переключатели и др.). Свойства объекта — это характеристики, определяющие вид, положение и поведение объекта. Например, свойства width и Height задают размер (ширину и высоту) формы, свойства тор и Left — положение формы на экране, свойство caption — текст заголовка.

Окно формы — Form 1 является основой всех программ Delphi. Это стандартное окно Windows. Открывается оно при запуске Delphi. На форме размещаются другие объекты: кнопки, переключатели, поля ввода/вывода и др. Во время проектирования форма покрыта сеткой из точек. Во время выполнения эта сетка не видна.

Окно редактора кода — Unitl. pas скрыто окном формы. Доступно через закладку Code. Также можно переключаться через меню View à Toggle From/Unit или через клавишу F12. Окно редактора кода состоит из двух частей: Code Exploring (рис. А2, № 1) и собственно редактор кода (рис. А2, № 2). Первое окно позволяет делать быстрый переход между записями второго окна. Если программа небольшая (как в нашем случае), его можно закрыть. Собственно окно редактора кода содержит две страницы: Code и Diagram (рис. А2, № 3). Страница Code предназначена непосредственно для написания программы. В начале работы над новым проектом это окно редактора кода содержит сформированный Delphi шаблон программы. Окно редактора кодов содержит помощника написания кодов Code Insight, который автоматически предлагает написание доступных команд кода программы. Вызывается нажатием клавишей Ctrl+Пробел.

Рис. А2. Окно редактора кода

При сохранении проекта Delphi на диск записывается около десятка файлов с расширениями cfg, dof, res, ddp, dfm и др. Файл проекта будет иметь расширение dpr, а файл c текстом программы – pas. Программа, транслированная в машинные коды, будет иметь расширение exe.

Операторы Delphi

1. Оператор присвоения состоит из двух символов “двоеточие” и ”равно” (:=). Например A1:=123456 (пример блок-схемы оператора присвоения представлен на рисунке А3).

Рис. А3. Блок-схема оператора присвоения

2. Оператор условия If (пример блок-схемы условного оператора представлен на рисунке А4):

Рис. А4. Блок-схема оператора условия

if условие then

begin

{Оператор 1}

{Оператор (операторы) выполняется, если условие истинно}

end

else

begin

{Оператор 2}

{Оператор (операторы) выполняется, если условие ложно}

end;

Перед else (после end) точка с запятой не ставится.

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

2.1. Вычисляется значение условия (условие — выражение логического типа, значение которого может быть равно истина - true или ложь - false).

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

Если условие ложно (значение выражения условие равно false), то выполняются инструкции, следующие за словом else (между begin и end).

По представленной блок-схема на рисунке А4 фрагмент программы будет выглядеть следующим образом:

If a > b Then

c := 1

ELSE

c := 0;

3. Оператор цикла for – цикл со счетчиком (пример блок-схемы цикла со счетчиком на рисунке А5).

Рис. А5. Пример блок-схемы цикла со счетчиком

for счетчик := нач_знач to кон_знач do

begin

{ Оператор (операторы), который выполнится несколько раз }

end

где:

    счетчик — переменная-счетчик числа повторений инструкций цикла; нач_знач-- выражение, определяющее начальное значение счетчика циклов; кон_знач — выражение, определяющее конечное значение счетчика циклов.

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

Количество повторений операторов в цикле можно вычислить по формуле

(кон_знач — нач_знач + l).

По представленной блок-схема на рисунке А5 фрагмент программы будет выглядеть следующим образом:

Summa := 0;

FOR i := 1 TO 10 DO

BEGIN

Summa := Summa + i;

END;

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

4. Оператор цикла с предусловием While (пример блок-схемы цикла с предусловием представлен на рисунке А6).

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

Типичными примерами использования цикла while являются вычисления с заданной точностью, поиск в массиве или в файле.

Рис. А6. Пример блок-схемы цикла с предусловием

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

while условие do

begin

{здесь инструкции, которые надо выполнить несколько раз}

end

где условие — выражение логического типа, определяющее условие выполнения инструкций цикла.

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

4.2. Сначала вычисляется значение выражения условие.

4.3. Если значение выражения условие равно False (условие не выполняется), то на этом выполнение инструкции while завершается.

4.4. Если значение выражения условие равно True (условие выполняется), то выполняются расположенные между begin и end инструкции тела цикла. После этого снова проверяется выполнение условия. Если условие выполняется, то инструкции цикла выполняются еще раз. И так до тех пор, пока условие не станет ложным (False).

По представленной блок-схема на рисунке А6 фрагмент программы будет выглядеть следующим образом:

i := 1;

Summa := 0;

WHILE i <= 10 DO

BEGIN

Summa := Summa + i;

i := i + 1;

END;

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

5. Оператор цикла с постусловием Repeat (пример блок-схемы цикла с постусловием представлен на рисунке А7)

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

Рис. А7. Пример блок-схемы цикла с постусловием

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

repeat

{инструкции}

unti1 условие

где условие — выражение логического типа, определяющее условие завершения цикла.

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

5.1. Сначала выполняются находящиеся между repeat и until инструкции тела цикла.

5.2. Затем вычисляется значение выражения условие. Если условие ложно (значение выражения условие равно False), то инструкции тела цикла выполняются еще раз.

5.3. Если условие истинно (значение выражения условие равно True), то выполнение цикла прекращается.

Таким образом, инструкции цикла, находящиеся между repeat и unti1, выполняются до тех пор, пока условие ложно (значение выражения условие
равно False).

По представленной блок-схема на рисунке А7 фрагмент программы будет выглядеть следующим образом:

i := 1;

Summa := 0;

REPEAT

Summa := Summa + i;

i := i + 1;

UNTIL i > 10;

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

5. Оператор выбора Case (дается для ознакомления, при выполнении РГР не используется)

case Селектор of список1:

begin

{инструкции 1}

end;

список2:

begin

{инструкции 2}

end;

списокМ:

begin

{инструкции N}

end;

else

begin

{инструкции}

end;

end;

где:

    Селектор — выражение, значение которого определяет дальнейший ход выполнения программы (т. е. последовательность инструкций, которая будет выполнена); Список N — список констант. Если константы представляют собой диапазон чисел, то вместо списка можно указать первую и последнюю константу диапазона, разделив их двумя точками. Например, список 1, 2, 3, 4, 5, 6 может быть заменен диапазоном 1..6.

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

1. Сначала вычисляется значение выражения-селектора.

2. Значение выражения-селектора последовательно сравнивается с константами из списков констант.

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

4. Если значение выражения-селектора не совпадает ни с одной константой из всех списков, то выполняется последовательность инструкций, следующая за else.

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

Типы данных

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

Язык Delphi поддерживает различные целые и вещественные типы данных, например, shortint, Byte, word, single, Double, Extended, comp и др.. В качестве основных от целых возьмем Integer, от вещественных – Real.

Таблица A.1. Типы данных Delphi

Тип

Диапазон

Объем памяти

Integer (целый)

от-2 до

4 байта

Real (вещественный)

от ±5.0x10-324 – до ±1.7x10308

8 байт (15-16 значащих разрядов)

Boolean (логический)

True=1, False=0

1 байт

Char (символьный)

1 символ таблицы ANSI

1 байт

String (строковый)

символы таблицы ANSI

Кол-во символов+1 байт

Array (массив)

ИмяМассива: array [размерность] of Тип Данных

Зависит от размерности и типа данных

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

РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА (Delphi-проект 1)

Программа расчета сумм четных и нечетных чисел (учебный вариант)

Сумма вычисляется по формуле

Цель работы. Написать фрагмент программы по заданной блок-схеме (рис. Б1).

Рис. Б1. Блок-схема расчета сумм четных и нечетных чисел

Пояснение. Delphi-проект представляет собой форму, на которой в определенном порядке расположены следующие объекты: панели, кнопки, текстовые поля, метки (рис. Б2).

При запуске программы в текстовое поле вводится количество вводимых чисел (на блок-схеме рис. Б1 - это ввод N, в программе - рис. Б2 № 9). После этого нажимается кнопка “Вычислить”. Далее в появившемся окне вводится целое число. Такая процедура повторяется N раз. Результат выводится в метки на форму (рис. Б2 №№ 11,13).

Алгоритм выполнения работы

1. Создать рабочую папку в папке “Мои документы” по формату: фамилия исполнителя латинскими буквами с добавлением слова delphi1 (например, если исполнитель Иванов, то рабочая папка будет называться ivanovdelphi1)

2. Запустить Delphi (Меню ПУСК à ПРОГРАММЫ à BORLAND DELPHI 7 à DELPHI 7).

3. Сохранить проект в рабочую папку по нижеуказанному алгоритму:

3.1. Меню Delphi File à Save Project As. По умолчанию откроется сначала окно сохранения модуля Save Unit1 As, где необходимо указать в поле ПАПКА свою рабочую папку, все остальное можно оставить без изменения и нажать кнопку Сохранить. Тогда при сохранении имя модуля будет Unit1.pas. Этот файл содержит непосредственно коды, определяющие “поведение” компонентов на форме. Далее автоматически открывается окно сохранения проекта Save Project1 As.

3.2. Сохранить файл проекта также в свою рабочую папку, предварительно выполнив следующее требование: имя файла проекта будет соответствовать фамилии и инициалам разработчика программы, написанными латинскими буквами без пробелов с добавлением цифры 1 (например, если разработчик программы , то файл будет называться так: ivanovps1.dpr, расширение dpr будет присвоено также по-умолчанию). При компилировании проекта (транслировании в машинные коды через меню Run à команда Run) по имени файла проекта будет создан запускающий файл с расширением EXE (в нашем случае – ivanovps1.exe), который затем будет представлен преподавателю для защиты работы. Рекомендуется сохранять все файлы проекта, это даст возможность при необходимости редактировать проект. В случае ошибочной работы с Delphi (например, открытие посторонних компонентов, “зависание”) программу можно закрыть и запустить заново двойным щелчком мыши по файлу dpr (в нашем случае – ivanovps1.dpr).

4. Собрать на форме компоненты, указанные на рисунке Б2 из библиотеки Delphi (страница Standard).

Рис. Б2. Форма программы

4.1. На рисунке Б2 № 1 – это сама форма, она создана автоматически. № 2 – компонент Panel. Установить его можно следующим образом:

4.1.1. Навести указатель мыши на компонент закладки Standard (рис. А1, № 2), через 1 секунду высветиться подсказка (например, MainMenu, PopupMenu, Label). Перемещаться по компонентам библиотеки, пока не высветится подсказка Panel.

4.1.2. Включить мышью компонент Panel.

4.1.3. Перевести указатель мыши на форму (рис. Б2 №1) и однократно щелкнуть мышью. В результате выполненной операции на форме откроется объект Panel1 (рис. Б3).

Рис. Б3. Вставка компонента Panel на форму, обрамление вокруг компонента указывает на то, что он активизирован; в центре компонента высвечивается его название с номером 1 (”Panel1”), если будет вставлен еще один компонент Panel, цифра увеличиться на одни (“Panel2”) и т. д.

5. Установить в Object Inspeсtor (Инспектор объектов, рис. А1, № 5) для свойств Align, Height, Width, Caption (закладка Properties) следующие параметры (компонент Panel1 должен быть активизирован, вокруг него высвечивается обрамление – рис. Б3):

Panel1 (рис. Б2, №2)

Properties:

Align

alTop

Height

80

Caption

удалить текст в поле Caption

5.1. В результате выполненной операции компонент Panel автоматически переместится в вверх формы (рис. Б4).

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

5.2. Выполнить сохранение проекта – Меню File à Команда Save (файлы проекта уже заданы, мы только сохраняем внесенные изменения. Данную процедуру рекомендуется выполнять после каждой операции заполнения формы новыми компонентами).

5.3. Выполнить первый запуск программы (процедура компиляции и создания запускающего файла с расширением EXE) Меню Run –> команда Run. В результате выполнения данной процедуры запуститься программа, которая на экране монитора будет представлена в виде формы с панелью (рис. Б5).

Рис. Б5. Форма с панелью при запуске программы (№ 1 – Panel, № 2 – кнопка закрытия запущенной программы и возврата в Delphi)

5.4. Если получилось что-то иное (например, форма закрыла верхнюю часть экрана, или вообще высветилась ошибка), то рекомендуется на данном этапе закрыть программу (см. следующий пункт), закрыть Delphi, очистить рабочую папку (в нашем примере ivanovpsdelphi1), затем запустить Delphi и заново начать проект (пункты 2-5).

5.5. Закрыть программу с формой и панелью, щелкнув мышью по кнопке с крестом на форме (рис. Б5, № 2). Таким образом выполнится возврат в стадию конструирования объектов на форме.

6. Установить компоненты Label1, Label2, Label3 (рис. Б2, №№ 3, 4, 5).

7. Установить в Object Inspeсtor (Инспектор объектов, рис. А1, № 5) для свойства Caption компонента Label1 следующие параметры (компонент Label1 должен быть активизирован, вокруг него высвечивается обрамление):

Label1 (рис. Б2, №3)

Properties:

Caption

Расчетно-графическая работа по информатике (Delphi, часть 1)

8. Установить в Object Inspeсtor для компонента Label2 следующие параметры (компонент Label2 должен быть активизирован, вокруг него высвечивается обрамление):

Label2 (рис. Б2, №4)

Properties:

Caption

Программа расчета сумм четных и нечетных чисел

9. Установить в Object Inspeсtor для компонента Label3 следующие параметры (компонент Label3 должен быть активизирован, вокруг него высвечивается обрамление):

Label3 (рис. Б2, №5)

Properties:

Caption

Разработчик: (вводятся данные о разработчике проекта, например, студент 2 курса, 3 факультета, 1 группы )

10. Установить компонент Button1 (рис. Б2, № 6).

11. Установить в Object Inspeсtor для компонента Button1 следующие параметры (компонент Button1 должен быть активизирован, вокруг него высвечивается обрамление):

Button1 (рис. Б2,6)

Properties:

Height

25

Width

75

Top

96

Caption

Выход

12. Определить в Object Inspeсtor для компонента Button1 событие (Events) – OnClick. Это можно сделать двумя способами.

1 Способ. Мышью дважды щелкнуть по компоненту Button1 на форме. Автоматически в редакторе кодов создастся процедура обработки события

procedure TForm1.Button1Click(Sender: TObject);

begin

end;

2 Способ. В Object Inspeсtor мышью активизировать закладку Events. Затем справа от поля OnClick дважды щелкнуть мышью. Автоматически в редакторе кодов создастся процедура обработки события

procedure TForm1.Button1Click(Sender: TObject);

begin

end;

12.1. Ввести между Begin и End команду Close (см. ниже), поставить символ “точка с запятой” (;) в конце строки. Символ “точка с запятой” является обязательным. Далее дать команду меню File –> Save. Выполнить команду меню Run à Run. Запустится проект, который кнопкой “Выход” должен закрыться.

procedure TForm1.Button1Click(Sender: TObject);

begin

Close;

end;

13. Перейти на форму из редактора кодов нажатием клавиши F12 и установить компонент Button2 (рис. Б2, № 7).

14. В Object Inspeсtor перейти на закладку Properties и для компонента Button2 установить следующие параметры (компонент Button2 должен быть активизирован, вокруг него высвечивается обрамление):

Button2 (рис. Б2, №7)

Properties:

Height

25

Width

75

Top

128

Caption

Вычислить

14. Установить компоненты Label4, Edit1, Label5, Label6, Label7, Label8 (рис. Б2) и определить в Object Inspeсtor следующие свойства:

Label4 (рис. Б2, №8)

Properties:

Caption

Количество чисел:

Edit1 (рис. Б2, №9)

Properties:

Text

Удалить текст в поле Text

Label5 (рис. Б2, №10)

Properties:

Caption

Сумма четных чисел:

Label6 (рис. Б2, №11)

Properties:

Caption

0

Label7 (рис. Б2, №12)

Properties:

Caption

Сумма нечетных чисел:

Label8 (рис. Б2, №13)

Properties:

Caption

0

15. Определить в Object Inspeсtor для компонента Button2 событие (Events) – OnClick, используя один из способов, описанных в пункте 12.

16. Вставить код для кнопки Button2 на событие OnClick (код приводится ниже по тексту в пункте 17, из практических соображений строки пронумерованы, при вводе кодов номера строк не ставить, это будет считаться ошибкой и программа не запустится). Справа от команд даны соответствующие элементы блок-схемы. Прежде чем вводить коды, внимательно изучите пункты 16.1. – 16.9..

16.1. При определении события OnClick редактор кодов Delphi автоматически создал строки 1, 4, 21, 22 (см. ниже по тексту пункт 17).

16.2. В строке 2 служебным словом var (от слова variable - переменный) открывается раздел описания переменных, используемых в процедуре обработки события OnClick. Тип данных interger определяет, что в переменные можно записывать только целые числа. Если необходима переменная для нахождения частного, например, среднего арифметического, дисперсии и. д., то следует указать тип данных real (или ему подобный).

16.3. В строке 3.1. создается целочисленный массив M. В данном случае в нем нет необходимости. Массив необходим, например, для определения дисперсии.

16.4. В строке 5 в переменную N записывается оператором присвоения значение из текстового поля Edit1 (при работе программы). Для упрощения здесь не ставим проверки вводимого значения в поле Edit1, если там при работе программы будет введено не целое число, то это приведет к ошибке.

Так как N – переменная целого типа, а поле Edit1.Textтекстового типа, необходимо использовать функцию преобразования текстового типа данных в целочисленный тип - StrToInt( ). [Сокращение от String To Integer]

В строках 19 и 20 идет обратное преобразование - IntToStr ( ), так как метка label – это строка; для преобразования вещественных переменных в строковые используется функция FloatToStr ( ).

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

16.6. В строке 7 начинается цикл, который будет прокручиваться N раз, так как цикл включает в себя множество операторов, используются операторные скобки begin … end (строки 8 и 18).

16.7. В строке 9 записывается значение в переменную A из окна запроса в работающей программе (также используется функция преобразования текстового значения в целочисленное). Это окно в работающей программе будет появляться N раз. В скобках для функции InputBox('','','') прописываются одинарные кавычки (а не двойные!).

16.8. В строке 10 производится проверка четности (деления на нуль без остатка). Функция mod находит остаток от деления (в данном случает от деления значения из переменной A на 2). Если остаток от деления равен нулю – значит четное число, тогда считаем сумму четных чисел (строка 12), иначе считаем сумму нечетных (строка 16).

16.9. Набрать строки 2, 3, 3.1., 5, 6, 7, 8, 9, 9.1., 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 (пункт 17).

17. Обработка события OnClick

1) procedure TForm1.Button2Click(Sender: TObject);

2) var

3) i, N, A, Chetn, Nechetn: integer;

3.1.) M: array[1..100] of Integer;

4) begin

5) N:=StrToInt(Edit1.Text);

6) Chetn := 0; Nechetn := 0;

7) For i := 1 To N Do

8) Begin

9) A:=StrToInt(InputBox('','',''));

9.1.) M[i] := A;

10) If (A Mod 2 = 0) Then

11) Begin

12) Chetn := Chetn + A;

13) End

14) ELSE

15) Begin

16) Nechetn := Nechetn + A;

17) End;

18) End;

19) Label6.Caption := IntToStr(Chetn);

20) Label8.Caption := IntToStr(Nechetn);

21) end;

22) end.

18. Сохранить проект: File à Save.

19. Запустить программу: Run à Run.

20. После запуска программы в текстовое поле (рис. Б2, № 9) для проверки ввести 11.

21. Нажать кнопку “Вычислить”.

22. В появившемся окне ввести цифру 1, затем нажать клавишу “Enter”.

22.1. Далее ввести цифру 2, нажать клавишу “Enter”.

22.2. Далее продолжать ввод чисел от 3 до 10 и цифру 15 (в итоге должны быть введены следующие цифры: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15).

23. Проверить ответ: сумма четных чисел = 30, сумма нечетных чисел= 40.

После выполнения ознакомительной работы с Delphi выполните зачетные работы (Delphi-проект 2 и Delphi-проект 3).

Зачетная работа (Delphi-проект 2)

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

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

1. Формулы, используемые в вычислениях.

1.1. Среднее арифметическое ;

1.2. Дисперсия (мера вариативности, характеризующая средний квадрат отклонений измерений от среднего арифметического) ;

1.3. Стандартное отклонение (характеризует степень отклонения результатов измерений от среднего значения в абсолютных единицах – корень квадратный из дисперсии) σ =;

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

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

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

В а р и а н т ы з а д а н и й

Вариант 1. Написать фрагмент программы расчета среднего арифметического из N целых чисел.

Вариант 2. Написать фрагмент программы расчета среднего арифметического из N целых четных чисел.

Вариант 3. Написать фрагмент программы расчета среднего арифметического из N целых нечетных чисел.

Вариант 4. Написать фрагмент программы расчета среднего арифметического из N целых чисел, кратных 3.

Вариант 5. Написать фрагмент программы расчета среднего арифметического из N целых чисел, кратных 5.

Вариант 6. Написать фрагмент программы расчета дисперсии из N целых чисел.

Вариант 7. Написать фрагмент программы расчета дисперсии из N целых четных чисел.

Вариант 8. Написать фрагмент программы расчета дисперсии из N целых нечетных чисел.

Вариант 9. Написать фрагмент программы расчета дисперсии из N целых чисел, кратных 3.

Вариант 10. Написать фрагмент программы расчета дисперсии из N целых чисел, кратных 5.

Вариант 11. Написать фрагмент программы расчета стандартного отклонения из N целых чисел.

Вариант 12. Написать фрагмент программы расчета стандартного отклонения из N целых четных чисел.

Вариант 13. Написать фрагмент программы расчета стандартного отклонения из N целых нечетных чисел.

Вариант 14. Написать фрагмент программы расчета стандартного отклонения из N целых чисел, кратных 3.

Вариант 15. Написать фрагмент программы расчета стандартного отклонения из N целых чисел, кратных 5.

Вариант 16. Написать фрагмент программы расчета коэффициента вариации из N целых чисел.

Вариант 17. Написать фрагмент программы расчета коэффициента вариации из N целых четных чисел.

Вариант 18. Написать фрагмент программы расчета коэффициента вариации из N целых нечетных чисел.

Вариант 19. Написать фрагмент программы расчета ошибки среднего арифметического из N целых чисел.

Вариант 20. Написать фрагмент программы расчета ошибки среднего арифметического из N целых четных чисел.

Алгоритм выполнения работы

2. Создать рабочую папку в папке “Мои документы” по формату: фамилия исполнителя латинскими буквами с добавлением слова delphi2 (например, если исполнитель Иванов, то рабочая папка будет называться ivanovdelphi2)

3. Запустить Delphi (Меню ПУСК à ПРОГРАММЫ à BORLAND DELPHI 7 à DELPHI 7).

4. Сохранить проект в рабочую папку по нижеуказанному алгоритму:

4.1. Меню Delphi File à Save Project As. По умолчанию откроется сначала окно сохранения модуля Save Unit1 As, где необходимо указать в поле ПАПКА свою рабочую папку, все остальное можно оставить без изменения и нажать кнопку Сохранить. Тогда при сохранении имя модуля будет Unit1.pas. Этот файл содержит непосредственно коды, определяющие “поведение” компонентов на форме. Далее автоматически открывается окно сохранения проекта Save Project1 As.

4.2. Сохранить файл проекта также в свою рабочую папку, предварительно выполнив следующее требование: имя файла проекта будет соответствовать фамилии и инициалам разработчика программы, написанными латинскими буквами без пробелов с добавлением цифры 2 (например, если разработчик программы , то файл будет называться так: ivanovps2.dpr, расширение dpr будет присвоено также по-умолчанию). При компилировании проекта (транслировании в машинные коды через меню Run à команда Run) по имени файла проекта будет создан запускающий файл с расширением EXE (в нашем случае – ivanovps2.exe), который затем будет представлен преподавателю для защиты работы. Рекомендуется сохранять все файлы проекта, это даст возможность при необходимости редактировать проект. В случае ошибочной работы с Delphi (например, открытие посторонних компонентов, “зависание”) программу можно закрыть и запустить заново двойным щелчком мыши по файлу dpr (в нашем случае – ivanovps2.dpr).

5. Собрать на форме необходимые компоненты библиотеки Delphi (см. рис. Б2). Указать в названии программы задание Вашего варианта задания.

6. Написать код для кнопки “Выход”.

7. Написать код для кнопки “Вычислить” с учетом Вашего варианта.

8. Сохранить и запустить программу.

9. После запуска программы в текстовое поле (рис. Б2, № 9) для проверки ввести 11.

10. Нажать кнопку “Вычислить”.

11. В появившемся окне ввести цифру 1, затем нажать клавишу “Enter”.

11.1. Далее ввести цифру 2, нажать клавишу “Enter”.

11.2. Далее продолжать ввод чисел от 3 до 10 и цифру 15 (в итоге должны быть введены следующие цифры: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15).

12. Проверить ответ:

сумма общая

70

сумма четных чисел

30

сумма нечетных чисел

40

сумма чисел, кратных 3.

33

сумма чисел, кратных 5.

30

среднее общее

6,363636

среднее четных чисел

6

среднее нечетных чисел

6,666667

среднее чисел, кратных 3

8,25

среднее чисел, кратных 5

10

дисперсия общая

16,45455

дисперсия четных чисел

10

дисперсия нечетных чисел

24,66667

дисперсия чисел, кратных 3

26,25

дисперсия чисел, кратных 5

25

стандарт. отклонение общее

4,05642

стандарт. отклонение четных чисел

3,162278

стандарт. отклонение нечетных чисел

4,966555

стандарт. отклонение чисел, кратных 3

5,123475

стандарт. отклонение чисел, кратных 5

5

коэффициент вариации общий

63,74375

коэффициент вариации четных чисел

52,70463

коэффициент вариации нечетных чисел

74,49832

коэффициент вариации чисел, кратных 3

62,10273

коэффициент вариации чисел, кратных 5

50

ошибка среднего арифметического общая

1,223057

ошибка среднего арифметического четных чисел

1,414214

ошибка среднего арифметического нечетных чисел

2,027588

ошибка среднего арифметического чисел, кратных 3

2,561738

ошибка среднего арифметического чисел, кратных 5

2,886751

13. Представить на диске (CD ROM) файл с расширением EXE (в нашем случае – ivanovps2.exe) для защиты работы.