4824

Создание первой программы на языке Turbo Pascal

Лекция

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

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

Русский

2012-11-27

184 KB

5 чел.

Создание первой программы.

Цель:

Показать студентам пример создания программы.

Задачи:

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

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

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

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

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

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

   Программирование – это процесс создания (разработки) программы. Этапы разработки программы:

  1.  Определение требований к программе. Описывается исходная информация и формулируются требования к результату, описывается поведение программы в особых случаях.
  2.  Разработка алгоритма. Необходимо определить последовательность действий, которые надо выполнить для получения результата.
  3.  Написание команд (кодирование).
  4.  Отладка. Отладка – процесс поиска и устранения ошибок.
  5.  Тестирование. Требуется проверить, как программа ведет себя.

   Компиляция.

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

  •  Проверяет текст исходной программы на отсутствие ошибок.
  •  Создает исполняемую программу – машинный код.

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

Форма

   Работа над новым проектом, так в Delphi называется разрабатываемое приложение, начинается с создания стартовой формы. Так на этапе разработки программы называют диалоговые окна. Стартовая форма создается путем изменения значений свойств формы Form1 и добавления к форме необходимых компонентов (полей ввода и вывода текста, командных кнопок). Свойства формы (табл.) определяют ее внешний вид: размер, положение на экране, текст заголовка, вид рамки. Для просмотра и изменения значений свойств формы и ее компонентов используется окно Object Inspector. В верхней части окна Object Inspector указано имя объекта, значения свойств которого отображается в данный момент. В левой колонке вкладки Properties (Свойства) перечислены свойства объекта, а в правой — указаны их значения.

Таблица. Свойства формы (объекта Tform)

Свойство

Описание

Name

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

Caption

Текст заголовка

Width

Ширина формы

Height

Высота формы

Top

Расстояние от верхней границы формы до верхней границы экрана

Left

Расстояние от левой границы формы до левой границы экрана

BorderStyle

Вид границы. Граница может быть обычной (bsSizeable), тонкой (bsSingle) или отсутствовать (bsNone). Если у окна обычная граница, то во время работы программы пользователь может при помощи мыши изменить размер окна. Изменить размер окна с тонкой границей нельзя. Если граница отсутствует, то на экран во время работы программы будет выведено окно без заголовка. Положение и размер такого окна во время работы программы изменить нельзя

Borderlcons

Кнопки управления окном. Значение свойства определяет, какие кнопки управления окном будут доступны пользователю во время работы программы. Значение свойства задается путем присвоения значений уточняющим свойствам biSystemMenu, biMinimaze, biMaximaze и biHelp. Свойство biSystemMenu определяет доступность кнопки Свернуть и кнопки системного меню, biMinimaze— кнопки Свернуть, biMaximaze— кнопки Развернуть, biHelp — кнопки вывода справочной информации

Icon

Значок в заголовке диалогового окна, обозначающий кнопку вывода системного меню

Color

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

Font

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

   

Изменим имя формы при помощи изменения значения  свойства Caption в окне инспектора объектов. Щелкнем мышью в строке Caption и введем текст “Скорость бега”.  Программа вычисления скорости бега должна получить от пользователя исходные данные – длину и время, за которое спортсмен пробежал дистанцию. Для этого вводится компонент Edit (вкладка Standard) – поле редактирования. Добавим краткую информацию о программе и назначении полей ввода. Для вывода текста в форму используем поля вывода текста – компонент Label (вкладка Standard). Для того, чтобы текст в поле вывода занимал несколько строк, требуется присвоить свойству AutoSize значение False, свойству  WordWrap – значение True. После этого можно ввести текст в свойство Caption. Теперь добавим две командные кнопки: Вычислить и Завершить. Кнопка – компонент Button располагается на вкладке Standard и добавляется на форму так же, как и другие компоненты.

Таблица. Свойства компонента Edit (поле ввода-редактирования)

Свойство

Описание

Name

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

Text

Текст, находящийся в поле ввода и редактирования

Left

Расстояние от левой границы компонента до левой границы формы

Top

Расстояние от верхней границы компонента до верхней границы формы

Height

Высота поля

Width

Ширина поля

Font

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

ParentFont

Признак наследования компонентом характеристик шрифта формы, на которой находится компонент. Если значение свойства равно True, то при изменении свойства Font формы автоматически меняется значение свойства Font компонента

Таблица. Свойства компонента Label (поле вывода текста)

Свойство

Описание

Name

Имя компонента. Используется в программе для доступа к компоненту и его свойствам

Caption

Отображаемый текст

Font

Шрифт, используемый для отображения текста

ParentFont

Признак наследования компонентом характеристик шрифта формы, на которой находится компонент. Если значение свойства равно True, текст выводится шрифтом, установленным для формы

AutoSize

Признак того, что размер поля определяется его содержимым

Left

Расстояние от левой границы поля вывода до левой границы формы

Top

Расстояние от верхней границы поля вывода до верхней границы формы

Height

Высота поля вывода

Width

Ширина поля вывода

Wordwrap

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

Таблица. Свойства компонента Button (командная кнопка)

Свойство

Описание

Name

Имя компонента. Используется в программе для доступа к компоненту и его свойствам

Caption

Текст на кнопке

Enabled

Признак доступности кнопки. Кнопка доступна, если значение свойства равно True, и недоступна, если значение свойства равно False

Left

Расстояние от левой границы кнопки до левой границы формы

Top

Расстояние от верхней границы кнопки до верхней границы формы

Height

Высота кнопки

Width

Ширина кнопки

Событие и процедура обработки события

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

   Событие (Event) — это то, что происходит во время работы программы. В Delphi каждому событию присвоено имя. Например, щелчок кнопкой мыши – это событие OnClick, двойной щелчок мышью событие OnDblClick. В табл. приведены некоторые события Windows.

Таблица. События

Событие

Происходит

OnClick

При щелчке кнопкой мыши

OnDblClick

При двойном щелчке кнопкой мыши

OnMouseDown

При нажатии кнопки мыши

OnMouseUp

При отпускании кнопки мыши

OnMouseMove

При перемещении мыши

OnKeyPress

При нажатии клавиши клавиатуры

OnKeyDown

При нажатии клавиши клавиатуры. События OnKeyDown и OnKeyPress — это чередующиеся, повторяющиеся события, которые происходят до тех пор, пока не будет отпущена удерживаемая клавиша (в этот момент происходит событие OnKeyUp)

OnKeyUp

При отпускании нажатой клавиши клавиатуры

OnCreate

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

OnPaint

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

OnEnter

При получении элементом управления фокуса

OnExit

При потере элементом управления фокуса

   Реакцией на событие должно быть какое-либо действие. В Delphi реакция на событие реализуется как процедура обработки события. Таким образом, для того чтобы программа выполняла некоторую работу в ответ на действия пользователя, программист должен написать процедуру обработки соответствующего события. Следует обратить внимание на то, что значительную часть обработки событий берет на себя компонент. Поэтому программист должен разрабатывать процедуру обработки события только в том случае, если реакция на событие отличается от стандартной или не определена. Например, если по условию задачи ограничений на символы, вводимые в поле Edit, нет, то процедуру обработки события OnKeyPress писать не надо, т. к. во время работы программы будет использована стандартная (скрытая от программиста) процедура обработки этого события.

   Методику создания процедур обработки событий рассмотрим на примере процедуры обработки события OnClick для командной кнопки Вычислить. Чтобы приступить к созданию процедуры обработки события, надо сначала в окне Object Inspector выбрать компонент, для которого создается процедура обработки события. Затем в этом же окне нужно выбрать вкладку Events (События).

   В левой колонке вкладки Events перечислены имена событий, которые может воспринимать выбранный компонент (объект). Если для события определена (написана) процедура обработки события, то в правой колонке рядом с именем события выводится имя этой процедуры.

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

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

   

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

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

procedure TForm1.Button1Click(Sender: TObject);

   var

       dist : integer; // дистанция, метров

       t:     real;    // время, как дробное число

       min : integer;  // время, минуты

       sek : integer;   // время, секунды

       v: real;        // скорость

   begin

       // получить исходные данные из полей ввода

       dist := StrToInt(Edit1.Text);

       t := StrToFloat(Edit2.Text);

       // предварительные преобразования

       min := Trunc(t);  // кол-во минут - это целая часть числа t

       sek := Trunc(t*100) mod 100; // кол-во секунд - это дробная часть числа t

       // вычисление

       v := (dist/1000) / ((min*60 + sek)/3600);

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

       label4.Caption := 'Дистанция: '+ Edit1.Text + ' м' + #13 +

                                   'Время: ' + IntToStr(min) + ' мин ' + IntToStr(sek) + ' сек ' + #13 +

                                   'Скорость: ' + FloatToStrF(v,ffFixed,4,2) + ' км/час';

   end;

   Функция Button1click выполняет расчет скорости и выводит результат расчета в поле Label4. Исходные данные вводятся из полей редактирования Editl и Edit2 путем обращения к свойству Text. Свойство Text содержит строку символов, которую во время работы программы введет пользователь. Для правильной работы программы строка должна содержать только цифры. Для преобразования строки в числа в программе используются функции StrToInt и strToFloat. Функция strToInt проверяет символы строки, переданной ей в качестве параметра (Edit1.Text – это содержимое поля Editl), на допустимость и, если все символы верные, возвращает соответствующее число. Это число записывается в переменную dist. Аналогичным образом работает функция strToFioat, которая возвращает дробное число, соответствующее содержимому поля Edit2. Это число записывается в переменную t.

   После того как исходные данные будут помещены в переменные dist и t, выполняются подготовительные действия и расчет. Первоначально с использованием функции Trunc, которая "отбрасывает" дробную часть числа, выделяется целая часть переменной t — это количество минут. Значением выражения Trunc(t*100) mod 100 является количество секунд. Вычисляется это выражение так. Сначала число t умножается на 100. Полученное значение передается функции Trunc, которая возвращает целую часть результата умножения t на 100. Полученное таким образом число делится по модулю на 100. Результат деления по модулю — это остаток от деления.

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

   Вычисленное значение скорости выводится в поле Label4 путем присваивания значения свойству Caption. Для преобразования чисел в строки используются функции IntToStr И FloatToStr.

   В результате нажатия кнопки Завершить программа должна завершить работу. Чтобы это произошло, надо закрыть, убрать с экрана, главное окно программы. Делается это при помощи метода close. Процедура обработки события Onclick для кнопки Завершить приведена в листинге В2.

   procedure TForm1.Button2Click(Sender: TObject);

   begin

       Form1.Close; // закрыть главное окно программы

   end;

   Полный листинг программы приведен

unit vrun1;

interface

uses

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

type

 TForm1 = class(TForm)

   Edit1: TEdit;

   Edit2: TEdit;

   Label1: TLabel;

   Label2: TLabel;

   Label3: TLabel;

   Label4: TLabel;

   Button1: TButton;

   Button2: TButton;

   procedure Button1Click(Sender: TObject);

   procedure Button2Click(Sender: TObject);

     

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

implementation

{$R *.dfm}

// щелчок на кнопке Вычислить

procedure TForm1.Button1Click(Sender: TObject);

var

   dist : integer; // дистанция, метров

   t:     real;    // время, как дробное число

   min : integer;  // время, минуты

   sek : integer;   // время, секунды

   v: real;        // скорость

begin

   // получить исходные данные из полей ввода

   dist := StrToInt(Edit1.Text);

   t := StrToFloat(Edit2.Text);

   // предварительные преобразования

   min := Trunc(t);  // кол-во минут - это целая часть числа t

   sek := Trunc(t*100) mod 100; // кол-во секунд - это дробная часть числа t

   // вычисление

   v := (dist/1000) / ((min*60 + sek)/3600);

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

   label4.Caption := 'Дистанция: '+ Edit1.Text + ' м' + #13 +

                     'Время: ' + IntToStr(min) + ' мин ' +

                                IntToStr(sek) + ' сек ' + #13 +

                     'Скорость: ' + FloatToStrF(v,ffFixed,4,2) + ' км/час';

end;

// щелчок на кнопке Завершить

procedure TForm1.Button2Click(Sender: TObject);

begin

       Form1.Close;

end;

end.

Система подсказок

   В процессе набора текста программы редактор кода выводит справочную информацию о параметрах процедур и функций, о свойствах и методах объектов.

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

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

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

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

Навигатор кода

   Окно редактора кода разделено на две части. В правой части находится текст программы. Левая часть, которая называется навигатор кода (Code Explorer), облегчает навигацию по тексту (коду) программы. В иерархическом списке, структура которого зависит от проекта, над которым идет работа, перечислены формы проекта, их компоненты, процедуры обработки событий, функции, процедуры, глобальные переменные и константы. Выбрав соответствующий элемент списка, можно быстро перейти к нужному фрагменту кода. Окно навигатора кода можно закрыть обычным образом. Если окно навигатора кода не доступно, то для того, чтобы оно появилось на экране, нужно из меню View выбрать команду Code Explorer.

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

  1.  Этапы разработки программы.
  2.  Понятие компиляции.
  3.  Событие.
  4.  Процедура обработки события.

Резюме

  1.  Этапы разработки программы: определение требований к программе, разработка алгоритма, написание команд (кодирование), отладка, тестирование.
  2.  Задачу преобразования исходной программы в машинный код выполняет специальная программа – компилятор.
  3.  Событие – это то, что происходит во время работы программы.
  4.  Реакцией на событие должно быть какое-либо действие, называемое процедурой обработки события.

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

   Попробовать создать собственную программу.


 

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

65636. МЕТОДИ ТА МОДЕЛІ КЛАСИФІКАЦІЇ ТА ПРОГНОЗУВАННЯ СТАНІВ ТЕЛЕКОМУНІКАЦІЙНИХ СИСТЕМ НА БАЗІ МОДИФІКОВАНИХ НЕЙРОННИХ МЕРЕЖ 913.5 KB
  Найбільш суттєвою ознакою сучасного етапу розвитку телекомунікаційної галузі є значне підвищення вимог до якості обслуговування при наданні як традиційних послуг передачі даних, так і мультимедійних послуг. Також спостерігається стрімке розширення переліку послуг, що надаються телекомунікаційними мережами.
65637. РОЗВИТОК ПРОФЕСІЙНОЇ КОМПЕТЕНТНОСТІ ПЕДАГОГІЧНИХ КАДРІВ У СИСТЕМІ ДІЯЛЬНОСТІ ВІДДІЛУ ОСВІТИ РАЙОННОЇ ДЕРЖАВНОЇ АДМІНІСТРАЦІЇ 186.5 KB
  Аналіз тенденцій останніх реформ української системи освіти свідчить, що одним з пріоритетних завдань сьогодення є забезпечення якості дошкільної, початкової, загальної середньої, позашкільної, професійної та вищої освіти.
65638. Українсько-єврейський дискурс у друкованих виданнях Наддніпрянщини (60-ті рр. ХІХ ст. – початок ХХ ст.) 162.5 KB
  Зокрема наукового осмислення потребує українськоєврейський дискурс у вітчизняних виданнях оскільки єврейська меншина в Україні була й нині є однією з найчисленніших а її стосунки в середовищі українського етносу не завжди складалися просто.
65639. Психолого-педагогічні засади підготовки студентів економічних спеціальностей до інноваційної діяльності 369.5 KB
  Здатність до інноваційної діяльності стає значущим компонентом професійної компетентності у будьякій сфері однак особливо важливою є інноваційна підготовка фахівця у сфері економіки. Суттєвим компонентом такої підготовки має бути формування особистісної...
65640. Просодія українського емоційного мовлення (експериментально-фонетичне дослідження) 458 KB
  Неослабний інтерес широкого кола лінгвістів взагалі та фонетистів зокрема до проблем дослідження емоційного мовлення є цілком закономірним в новітню епоху розвитку лінгвістики на антропоцентричних засадах де прагматика посідає чільне місце.
65641. СИСТЕМНІ МЕТОДИ БОРОТЬБИ ЗІ ЗЛОЧИНАМИ В ЕКОНОМІЦІ 204.5 KB
  В сучасних умовах найбільшою небезпекою характеризується злочинність у сфері економіки структура якої визначена законодавцем і як відомо містить у собі три групи злочинів злочини проти власності злочини в сфері економічної діяльності і злочини проти інтересів служби в комерційній і іншій організаціях.
65642. ЕКОЛОГО-ЕКОНОМІЧНІ ОСНОВИ ВИКОРИСТАННЯ БІОІННОВАЦІЙ 304.5 KB
  Одним із таких завдань є оцінка нововведень з позиції їх відповідності умовам відтворення системи екологоекономічних відносин адже наслідки що проявляються у довгостроковій перспективі можуть становити загрозу екологічній безпеці та стійкому розвитку економіки України.
65643. ПАТОГЕНЕТИЧНІ МЕХАНІЗМИ ПРОГРЕСУВАННЯ ЛЕГЕНЕВОЇ НЕДОСТАТНОСТІ ПРИ ПОЄДНАНОМУ ПЕРЕБІГУ ХРОНІЧНИХ ГНІЙНО-ДЕСТРУКТИВНИХ ЗАХВОРЮВАНЬ ЛЕГЕНІВ І ЦИРОЗУ ПЕЧІНКИ ТА ЇХНЯ КОРЕКЦІЯ 224 KB
  Особливі надії на вирішення проблеми гнійних форм ХНЗЛ повязують з підвищенням ефективності антибактеріальної терапії із своєчасним і раціональним використанням ендоскопічної діагностики і терапії хірургічного лікування реабілітації хворих у післяопераційному періоді...
65644. НАПРЯМИ ПІДВИЩЕННЯ ЕКОНОМІЧНОЇ ЕФЕКТИВНОСТІ ВИРОБНИЦТВА ТА ПЕРЕРОБКИ ОВОЧІВ ВІДКРИТОГО ҐРУНТУ 361 KB
  Сприятливі ґрунтовокліматичні умови в Україні створюють необхідні передумови та значний економічний потенціал для організації ефективного виробництва овочів відкритого ґрунту. Незважаючи на те що площі їхніх посівів збільшуються ефективність...