ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 31.03.2024

Просмотров: 121

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Примеры: Pred(5) = 4, Pred('E') = 'D', Pred(True) = False.

Succ() - функция, обратная для Pred() - возвращает следующее значение.

Примеры: Succ(5) = 6, Succ('E') = 'F', Succ(False) = True.

Ord() - возвращает порядковый номер значения в списке значений типа данных. Примеры: Ord('A') = 65, Ord(True) = 1.

Low() - возвращает минимальное значение указанного типа данных.

Примеры: Low(Byte) = 0, Low(Boolean) = False, Low(Char) = #0 (символ с кодом 0).

High() - возвращает максимальное значение указанного типа данных.

Примеры: High(Byte) = 255, High(Boolean) = True, High(Char) = #255 (в русской локали это символ "я").

Dec() - уменьшает значение на единицу.

Inc() - увеличивает значение на единицу.

SizeOf() - Размер элемента данных указанного типа в байтах. Пример:значение SizeOf(Byte) равно 1, значение SizeOf (Integer) равно 4.

Стандартные функции преобразования типов

Round(X: Extended) - Округление дробного числа до ближайшего целого. Пример: значение Round (3.74) равно 4

RoundTo(X: Extended) - Округление дробного числа. . Пример: значение RoundTo(1.234, -2) равно 1.23

Trunc(X: Extended) - Отбрасывание дробной части числа. Пример: значение Trunc(3.74) равно 3

IntToStr(N: Integer): String - Преобразование целого числа в строку. Пример: значение IntToStr(12987) равно '12987'

FloatToStr(X: Extended): String - Преобразование дробного числа в строку. Пример: значение FloatToStr(3.74) равно '3.74'

StrToInt(S: String): Integer - Преобразование строки в целое число. Пример: значение StrToInt( '12985') равно 12985

StrToFloat(S: String): Extended - Преобразование строки в дробное число. Пример: значение StrToFloatf ('3.14') равно 3.14

Chr() - Символ, преобразованный из числового аргумента. Пример: значение Chr(78) равно 'N'

Функции IntToStr(), FloatToStr(), StrToInt(), StrToFloat() требуют подключения Unit Sysutils, а функция RoundTo() подключения Unit Math.

Функции работы со строками

Pos(Substr: String; Str: String): Integer - возвращает позицию (индекс) первого вхождения Substr в строке Str. Если Substr нет в Str, возвращает 0. Например позиция запятой в строке может быть найдена так N:=Pos(DecimalSeparator, S);

Insert(Source: String; var S: String; Index: Integer): Integer - вставляет строку Source в строку S, начиная с номера символа, равного Index

Delete(var S: String; Index: Integer, Count: Integer) - удаляет из строки S подстроку, начинающуюся с номера символа, равного Index, и содержащую до Count символов.

Copy(S: String; Index: Integer, Count: Integer): String - Возвращает подстроку строки S, начиная с номера символа, равного Index и содержащую до Count символов.


Length(S: String) - Длина строки или число элементов в массиве. Пример: значение length('abc') равно 3

AnsiUpperCase(const S: String): String - Возвращает строку S, преобразованную к верхнему регистру.

Trim(const S: String): String - Удаляет из строки S начальные и завершающие пробелы и управляющие символы.

TrimLeft(const S: String): String - Удаляет из строки S начальные пробелы и управляющие символы.

TrimRight(const S: String): String - Удаляет из строки S завершающие пробелы и управляющие символы.

Процедуры и функции преобразования дат и времени

Функции, предоставляющие информацию о текущих дате и времени:

Now: TDateTime - возвращает текущую дату и время. Пример TekDataVr:=Now;

Date: TDateTime - возвращает текущую дату. Пример TekData:=Date;

Time: TDateTime - возвращает текущее время. Пример TekVr:=Time;

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

DayOfWeek(Date: TDateTime): Integer - возвращает текущий номер дня недели: 1 - воскресенье, 7 - суббота.

DecodeDate(Date: TDateTime; var Year, Month, Day: Word) - разбивает дату Date на год - Year, месяц - Month и день - Day.

DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word) - разбивает время Time на час - Hour, минуты - Min, секунды - Sec и миллисекунды - MSec.

EncodeDate(Year, Month, Day: Word): TDateTime - объединяет год - Year, месяц - Month и день - Day в значение типа TDateTime.

EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime - объединяет час - Hour, минуты - Min, секунды - Sec и миллисекунды - MSec.

Функции, переводящие дату и время из формата TDateTime в строчный формат:

DateTimeToStr(DateTime: TDateTime): String - Преобразует дату и время DateTime в строку.

DateToStr(Date: TDateTime): String - Преобразует дату Date в строку.

TimeToStr(Time: TDateTime): String - Преобразует время Time в строку.

Диалоговые окна ввода/вывода информации.

Процедура ShowMessage, функции MessageDlg, MessageDlgPos и MessageBox отображают окно вывода сообщений, а функции InputBox и InputQuery – окно для ввода информации.

Процедура ShowMessage (const Msg: String) отображает окно сообщения с кнопкой ОК. Пример: ShowMessage('Сообщение');

Функция MessageDlg(const Msg: String; AType: TMsgDlgType; AButtons: TMsgDlgButtons; Helpctx: Longint) : word отображает окно сообщения в центре экрана и позволяет получить ответ пользователя. Параметр Msg содержит отображаемое сообщение.


Тип окна сообщения определяется параметром АТуре, параметр AButtons задает набор кнопок.

Функция MessageDlgPos(const Msg: String; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer) : Word отличается от функции MessageDlg наличием параметров Х и Y, управляющих положением окна на экране.

Функция InputBox(const ACaption, APrompt, ADefault: String): String отображает диалоговое окно для ввода строки текста.

Параметр ACaption задает заголовок окна, а параметр APrompt содержит поясняющий текст к полю ввода. Параметр ADefault определяет строку, возвращаемую функцией при отказе пользователя от ввода информации (нажатие кнопки Cancel или клавиши <Esc>).

Пример использования функции InputBox:

rezult := InputBox('Город', 'Введите название города’, 'Владикавказ');

Функция InputQuery (const ACaption, APrompt: String; var Value: String): Boolean отличается от функции InputBox тем, что вместо третьего параметра - строки по умолчанию - используется параметр Value, который в случае подтверждения ввода содержит введенную пользователем строку. Если нажата кнопка ОК, то функция возвращает значение True, если нажата кнопка Cancel или клавиша <Esc> – значение False.

Var NewString:string;

begin

NewString := 'Владикавказ';

if InputQuery('Город', 'Введите название города', NewString) = true

then ShowMessage('Вы нажали кнопку Ok')

else ShowMessage('Вы нажали кнопку Cancel');

end;

Функция MessageBox(Parent: HWnd; Txt, Caption: PChar; TextType: Word): Integer создает и отображает блок диалога, содеpежащий указанное сообщение и заголовок, а также предопределенные пиктограммы и текстовые кнопки, в соответствии с параметром TexType.

Параметры:

Parent - окно, владеющее блоком сообщений.

Txt - отобpажаемое сообщение.

Caption - заголовок блока диалога.

TextType: одна или комбинация констант mb_.

Пример использования функции MessageBox:

case MessageBox(Application.handle, 'Сохранить изменения', 'Предупреждение', MB_ICONQUESTION + MB_YESNOCANCEL + MB_DEFBUTTON3) of

mrYes: begin

AssignFile (F,'Save.dat'); Rewrite(F); WriteLn(F,X);

CloseFile(F); end;

mrNo: Close;

mrCancel: exit; end;


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

1. Что такое процедура?

2. Дайте определение функции.

3. Как объявляется процедура и функция?

4. Назовите функции и процедуры для порядковых типов данных.

5. Какие стандартные функции преобразования типов есть в Delphi?

6. Перечислите функции работы со строками.

7. Назовите процедуры и функции преобразования дат и времени.

5.3. ЗАДАНИЯ

  1. Напишите программу, реализующую функцию обмена значений переменных.

  2. Решение квадратного уравнения. Использовать собственную процедуру и вывод справочной информации.

  3. Пересчет веса из фунтов в килограммы. Написать соответствующую процедуру, использовать компонент ListBox.

  4. Написать программу, используя функцию, которая проверяет, является ли введенное пользователем число простым.

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

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

  7. Написать программу, используя функцию, которая показывает дату завтрашнего дня.

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

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

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

Лабораторная работа № 6

ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ

Цель работы: научиться применять циклическую структуру в программировании.

6.1. Теоретическая часть

Инструкция цикла с параметром имеет два возможных формата:

for <Параметр> := <Выражение1> to <Выражение2> do <Инструкция>;

for <Параметр>:= <Выражение1> downto <Выражение2> do <Инструкция>;

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

Инструкция цикла (инструкция) обеспечивает выполнение тела цикла, которым является инструкция после слова do, до полного перебора с соответствующим шагом всех значений параметра цикла от начального до конечного. Шаг параметра всегда равен 1 для первого формата цикла и −1 - для второго, т. е. значение параметра последовательно увеличивается (for...to) или уменьшается (for...downto) на единицу при каждом повторении цикла.


Примеры циклов с параметром:

var

n, k: integer;

s := 0;

for n := 1 to 10 do s := s + m[n] ;

for к := 0 to 2 do for n := 5 to 10 do

begin

arr1[k, n] := 0; arr2[k, n] := 1;

end;

В первом цикле выполняется расчет суммы десяти значений массива m. Во втором случае два цикла вложены один в другой, и в них пересчитываются значения элементов двумерных массивов arr1 и аrr2.

В качестве примера применения оператора for рассмотрим программу, осуществляющую вычисление суммы всех целых чисел от 1 до N.

var

  i, N, Sum : Integer;

begin

Sum := 0;        

for i := 1 to N do   Sum := Sum + i;

end;

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

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

repeat

<Инструкция1>;

<ИнструкцияN>;

until <Условие>;

Условие представляет собой выражение логического типа. Инструкции, заключенные между словами repeat и until, составляют тело цикла и выполняются до тех пор, пока логическое выражение Условие не примет значение True, т. е. тело цикла повторяется при значении Условия, равном False. Так как Условие проверяется только в конце цикла, инструкции тела цикла выполняются минимум один раз.

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

Приведем для иллюстрации цикла с постусловием расчет суммы десяти значений массива m:

var

х: integer; sum: real; m: array[1..10] of real;

begin

x := 1; sum := 0;

repeat

sum := sum + m[x];

x := x + 1;

until(x < 10);

end;

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

while <Условие> do <Инструкция>;

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

В качестве примера рассмотрим расчет суммы десяти значений массива:

var

х: integer; sum: real; m: array[1..10] of real;