Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Стандартные функции языка Object Pascal для работы с числовыми и символьными типами




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

 

Табл. 2

Название функции Возвращаемое значение
Abs(n) Абсолютное значение n
Sqrt(n) Квадратный корень n
Sqr(n) Квадрат n
Sin(n) Синус n
Cos(n) Косинус n
Arctan(n) Арктангенс n
Exp(n) Экспонента n
Ln(n) Натуральный логарифм n

При выполнении операций, связанных с вводом и выводом информации, часто приходится выполнять преобразования типа информации, например, преобразовывать данные числовых типов в строки и наоборот. Часто при решении расчётных задач возникает необходимость преобразовать число одного из вещественных типов в целое число, округлив его или выделив целую часть. Для решения подобных задач в языке Object Pascal имеются стандартные функции преобразования типов. Некоторые из них приведены в таблице №3.

Табл. 3.

Функция Значение
Chr(n) Символ с номером n.
IntToStr(n) Строка, являющаяся изображением значения целого n.
FloatToStr(n) Строка, являющаяся изображением значения вещественного n. Различие между функциями описано ниже.
FloatToStrF(n,f,l,m)
StrToInt(s) Целое, изображением является строка s.
StrToFloat(s) Вещественное, изображаумое строкой s.
Round(n) Целое, ближайшее к n. Результат целый.
Trunc(n) Целая часть от n. Результат целый.
Frac(n) Дробная часть вещественного n.
Int(n) Целая часть вещественного n. Результат вещественный.

Функция FloatToStrF(n,f,l,m) обеспечивает возможность форматного вывода вещественных чисел. Её аргументы имеют следующий смысл:

n - преобразуемое значение;

f - формат (способ изображения);

l - точность (общее количество цифр);

m - количество цифр после десятичной точки.

Поле «формат» может принимать следующие значения

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

ffExponent Научный формат. Число преобразовывается в строку вида "-d.ddd...E+dddd". Если число отрицательное, строка начинается знаком минус. Количество цифр в показателе экспоненты от 0 до 4.

ffFixed Формат с фиксированной точкой. Число преобразуется в строку вида: "-ddd.ddd...". Если число отрицательное, строка начинается знаком минус. Количество цифр после десятичной точки не более 18. Если количество цифр превышает величину, указанную пользователем, изображение числа преобразуется в научный формат.

ffNumber Числовой формат возвращает строку в виде "-d,ddd,ddd.ddd...". Он отличается от формата с фиксированной точкой только разделителями групп разрядов.

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

Функции обычно используются в качестве операндов выражений. Например, для расчёта площади треугольника по формуле Герона можно использовать следующие выражения: p:=(a+b+c)/2; {величина полупериметра} S:=sqrt(p*(p-a)*(p-b)*(p-c)); {площадь тр-ка}

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

Кроме того, пакет Delphi включает модуль Math, содержащий большое количество часто используемых функций, не включённых в набор функций языка Паскаль, а также компонент F1Book, позволяющий использовать среду Delphi в качестве процессора электронных таблиц и организовать обмен информацией между Delphi и Excel. Для использования модуля Math его название следует внести в раздел uses основного модуля программы. Процесс установки компонента в форму не отличается от процесса установки остальных компонентов.

 

§ 8 Ввод и вывод данных

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

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

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

Где

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

Заголовок – текст заголовка окна ввода.

Подсказка – текст поясняющего сообщения.

Значение – текст, находящийся в поле ввода в момент появления окна ввода на экране.

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

var a:string;

Begin

a:=InputBox('Расчёт площади','Введите длину стороны А в метрах','');

ShowMessage('Длина стороны А равна'+ #13 + a + ' метров');

end;

Окна ввода и вывода информации имеют вид:

 

 

Рис.6-3

Через окно ввода или окно сообщения можно вывести только одно сообщение. Заголовок окна сообщения – название проекта, под которым он сохранён в памяти ПК. Окна ввода и окна сообщений удобно использовать при необходимости ввести или вывести одно данное. Если же, как, например, в случае расчёта площади треугольника, необходимо ввести несколько данных, удобнее использовать окна диалога, аналогичные окну программы «Приветствие», процесс создания которой рассматривался выше. Для создания заголовка окна, изменяем свойство caption исходной формы и присваиваем ему значение «Площадь треугольника». В верхней части окна создаём метку (элемент Label1) и, изменяя её свойство caption, создаём надпись «Треугольник задаётся длинами трёх сторон». Затем вводим в форму 3 окна редактирования (элементы Edit1-3). Поля редактирования предназначены для ввода длин сторон треугольника. Поэтому над с использованием меток (элементы Label2-4) создаём поясняющие надписи «Сторона А», «Сторона В», «Сторона С». В нижней части формы создаём 3 кнопки «Вычислить», «Новый», «Завершить». Процессы создания кнопок не отличается от процесса создания кнопки в окне программы «Приветствие». Очевидно, в окна редактирования следует ввести значения длин сторон. Щелчок мышью по кнопке «Вычислить» должен сопровождаться вычислением площади треугольника. Кнопка «Новый» используется для ввода новых данных. Кнопка «Завершить» закрывает окно диалога. Следует иметь в виду, что информация, внесенная в поля редактирования, имеет строковый тип даже, если она состоит только из цифр. Поэтому перед выполнением расчётов её необходимо преобразовать в числа с использованием функций StrToInt или StrToFloat. Например, а1:= StrToFloat(а). Здесь а1 – вещественное число, а – строка цифр с десятичным разделителем. Фрагмент программы расчёта площади имеет вид:

Var

a,b,c:integer;

p,s:real;

Begin

a:=StrToInt(Edit1.Text);

b:=StrToInt(Edit2.Text);

c:=StrToInt(Edit3.Text);

p:=(a+b+c)/2;

s:=sqrt(p*(p-a)*(p-b)*(p-c));

ShowMessage('ПЛОЩАДЬ ТРЕУГОЛЬНИКА РАВНА' + #13 + FloatToStr(s/10000)+' га')

end;

Окна ввода и вывода информации приведены на рис. 6-4.

 
 

Рис. 6-4.

Если пользователь желает ограничить количество десятичных знаков в окне сообщения, он имеет возможность использовать форматный вывод с использованием функции FloatToStrF. FloatToStrF(s/10000,ffFixed,5,3) выводит пятизначное число, содержащее 3 знака после запятой.В случае необходимости пользователь имеет возможность многократно повторять расчёт. Кнопка «Новый» очищает поля редактирования от ненужной информации, присваивая свойству «Text» каждого из полей значение «‘’».Щелчок мыши по кнопке «Завершить» сопровождается закрытием окна программы с использованием команды Form1.Close.

Задание. Получить у преподавателя 2-ю индивидуальную задачу и создать программу её решения. Ввод исходных данных и вывод результата выполнить с использованием окон ввода и окон редактирования.

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

 

§ 9 Реализация разветвляющихся алгоритмов

Реакция программы на ошибки ввода данных

Правильно составленная программа должна включать контроль ошибок ввода исходных данных и обеспечивать возможность повторения ввода. При расчёте треугольников одной из наиболее распространённых ошибок является нарушение соотношения между длинами сторон, обеспечивающего возможность построения треугольника. Это соотношение состоит в том, что сумма длин любых двух сторон должна быть больше длины третьей стороны. Следовательно, программа должна трижды проверить истинность указанного соотношения, определить количество ошибок ввода и имя неверно введённой величины, если таковая имеется, а также сообщить пользователю об ошибке и предложить повторить ввод. Иными словами, ход выполнения программы зависит от выполнения некоторого условия (правильно выбраны длины сторон треугольника или допущена ошибка). Управление последовательностью выполнения команд программы, а также преобразованием данных осуществляется с использованием операторов. Операторы – синтаксические конструкции, предназначенные как для записи алгоритмических действий по преобразованию данных, так для задания порядка выполнения других действий. Набор операторов языка Паскаль обеспечивает возможность наглядного и однозначного представления алгоритмов в стиле структурного программирования. Язык содержит следующие операторы:

1) Оператор присваивания.

2) Оператор перехода.

3) Условный оператор.

4) Оператор варианта.

5) Операторы цикла:

a) с параметром;

b) с проверкой условия до начала выполнения операции (с предпроверкой);

c) с проверкой условия после завершения операции (с постпроверкой);

6) Оператор процедуры.

7) Составной оператор.

8) Пустой оператор.

Оператор присваивания рассматривался выше и применялся в программе расчёта площади треугольника.

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

 
 

 


 

Сначала выполняется логическое выражение, стоящее после служебного слова IF. Его результат имеет булевский тип. Если он равен TRUE, то выполняется оператор, указанный после служебного слова THEN, если он равен FALSE, то выполняется оператор, стоящий после служебного слова ELSE. При отсутствии ELSE управление передаётся следующему оператору. Условный оператор может быть использован для решения целого ряда задач, например, для определения максимального или минимального из двух значений: if X<Y then MAX:=Y else MAX:=X или для организации подсчёта количества ошибок. Пусть k – количество ошибок.

k:=0; {Первоначально k =0}

……… {Ввод исходных данных}

if a+b<c then k:=1;

Таким образом, в случае ошибочного ввода данных величина k будет отличной от нуля. Очевидно, что количество ошибок при вводе длин сторон треугольника не может быть больше 1. Только одна из сторон может быть чересчур длинной. Если в случае ошибочного ввода следует выполнить несколько действий, напри­мер, определить количество ошибок и выделить ошибочно введённое значение, необходимо создать составной оператор – последовательность операторов, заключённую между служебными словами begin…end. Пусть требуется выделить ошибочно введённое значение, изменив цвет шрифта:

if a+b<c then begin

k:=k+1;

Edit3.Font.Color:=clRed

end;

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

if k=0 then begin

……………

end;

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

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

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных