Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_Delphi_1.doc
Скачиваний:
15
Добавлен:
18.09.2019
Размер:
1.64 Mб
Скачать

2.Структура программы и типы в языке Delphi

Подготовка к работе

  1. Изучить:

  • Структуру программы на языке Delphi.

  • Задание констант, переменных.

  • Типы численных данных и ошибки при преобразованиях типов численных данных.

  • Организацию простейшего ввода-вывода данных.

  1. Составить программу решения задачи в виде консольного приложения.

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

  1. Алфавит языка Delphi, операции, идентификаторы.

  2. Структура программы. Разделы объявления констант, переменных, меток, типов данных, подпрограмм

  3. Константы. Их объявление. Константные выражения.

  4. Переменные. Их объявление.

  5. Форматы представления чисел (с фиксированной и плавающей точкой).

  6. Типы целых чисел без знака: Byte, Word, LongWord = Cardinal.

  7. Типы целых чисел со знаком: Shortint, Smallint, Integer = Longint, Int64.

  8. Типы вещественных чисел: Single, Real48, Double = Real, Extended, Comp, Currency.

  9. Тип TDateTime и его использование

  10. Логические типы данных Boolean.

  11. Символьные типы: AnsiChar = Char, WideChar.

  12. Строковые типы для длинных строк: AnsiString = String, WideString.

  13. Строковые типы для коротких строк: ShortString, String[N].

  14. Совместимость типов при присвоениях.

  15. Тип Variant и его использование.

Задание

  1. Создать программу взаимных преобразований типов численных данных в соответствии с вариантами, приведенными в табл. 2 .1. Нужно преобразовывать численные данные из типа Start в типы Fin1 и Fin2 для вещественных и целых чисел.

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

  3. Создать программу работы с типом TDateTime. Она должна запрашивать дату и время рождения студента, выводить текущие дату/время, запрашивать желаемое время дальнейшего обучения, выводить дату/время и день недели конца обучения.

табл. 2.1 Варианты заданий

Типы вещественных чисел

Типы целых чисел

Start

Fin_1

Fin_2

Fin_3

Start

Fin_1

Fin_2

Fin_3

1

Single

Currency

Extended

Real48

Byte

Cardinal

Integer

Smallint

2

Real48

Single

Currency

Double

Word

Byte

Cardinal

Integer

3

Double

Real48

Single

Real

LongWord

Word

Byte

LongInt

4

Real

Double

Real48

Single

Cardinal

LongWord

Word

Byte

5

Extended

Real

Double

Real48

Shortint

Cardinal

LongWord

Word

6

Comp

Extended

Real

Double

Smallint

Shortint

Cardinal

LongWord

7

Currency

Comp

Extended

Real

Integer

Smallint

Shortint

Cardinal

8

Single

Currency

Comp

Extended

LongInt

Integer

Smallint

Shortint

9

Real48

Single

Currency

Comp

Int64

LongInt

Integer

Smallint

10

Double

Real48

Single

Currency

Word

Int64

LongInt

Integer

11

Real

Double

Real48

Single

LongWord

Byte

Int64

LongInt

12

Extended

Real

Double

Real48

Cardinal

Word

Int64

Int64

13

Comp

Extended

Real

Double

Shortint

LongWord

Byte

Word

14

Currency

Comp

Extended

Real

Smallint

Cardinal

Word

LongWord

15

Real

Currency

Comp

Extended

Integer

Shortint

LongWord

Cardinal

Пример выполнения

Задание 1. Создать программу преобразования численных данных из типа Start в типы Fin1, Fin2 и Fin3:

  1. Для вещественных чисел: Start = Real, Fin1 = Extended, Fin2 = Single, Fin3 = Currency.

  2. Для целых чисел: Start = Smallint, Fin1 = Cardinal, Fin2 = Longint, Fin3 = Byte.

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

Листинг программы

program Prg_2_1;

{$APPTYPE CONSOLE}

uses

SysUtils,RusTrans;

const

real_0:real=123.456789;

int_0:smallint=-1111;

var

real_1:extended;

real_2:single;

real_3:currency;

int_1:cardinal;

int_2:longint;

int_3:byte;

begin

writeln(Rus('Вещественное число в разных типах'));

writeln;

real_1:=real_0;

real_2:=real_0;

real_3:=real_0;

writeln(Rus('Значения и размер в байтах'));

writeln('real_0=',real_0:10:6,sizeof(real_0):4,' real');

writeln('real_1=',real_1:10:6,sizeof(real_1):4,' extended');

writeln('real_2=',real_2:10:6,sizeof(real_2):4,' single');

writeln('real_3=',real_3:10:6,sizeof(real_3):4,' currency');

readln;

writeln(Rus('Целое число в разных типах'));

int_1:=int_0;

int_2:=int_0;

int_3:=int_0;

writeln;

writeln(Rus('Значения и размер в байтах'));

writeln('int_0=',int_0:10,sizeof(int_0):4,' smallint');

writeln('int_1=',int_1:10,sizeof(int_1):4,' cardinal');

writeln('int_2=',int_2:10,sizeof(int_2):4,' longint');

writeln('int_3=',int_3:10,sizeof(int_3):4,' byte');

readln;

end.

В листинге программы в разделе констант const объявлены, как типизированные константы, стартовые числа Start.tin2 нт выбран таким, чтобы задаваемое значение умещалось в формате типа. 0000000000000000000000000000000000000000000000000 В разделе var объявлены группы переменных Fin1, Fin2, Fin3 для каждого вида чисел. На рис. 2 .1 показан вид окна консольного приложения перед закрытием программы.

рис. 2.1. Окно задания 1 при выполнении

Задание 2

Создать программу взаимных преобразований строковых и символьных типов. Она должна отображать слово World строками разного типа и добавлять к строке символ восклицательного знака !. На рис. 2 .2 показан вид окна консольного приложения перед закрытием программы.

Листинг программы

program Prg_2_2;

{$APPTYPE CONSOLE}

uses

SysUtils, RusTrans;

var

Str_1:string;

Str_2:string[10];

ShortStr:ShortString;

AnsiStr:AnsiString;

WideStr:WideString;

MyChar:char;

begin

Str_1:='World';

writeln(Rus('Строки в разных типах'));

writeln;

Str_2:=Str_1;

ShortStr:=Str_1;

AnsiStr:=Str_1;

WideStr:=Str_1;

writeln(Rus('Значения и размер в байтах'));

writeln;

writeln('AnsiStr =',AnsiStr:7,SizeOf(AnsiStr):5,

' AnsiString');

writeln('Str_1 =',Str_1:9,SizeOf(Str_1):5,' String');

writeln('WideStr =',WideStr:7,SizeOf(WideStr):5,

' WideString');

writeln('ShortStr =',ShortStr:6,SizeOf(ShortStr):5,

' ShortString');

writeln('Str_2 =',Str_2:9,SizeOf(Str_2):5,' String[..]');

readln;

writeln(Rus('Добавим к строке символ !'));

writeln;

MyChar:='!';

Str_2:=Str_2+MyChar;

writeln('Str_2 =',Str_2:9,SizeOf(Str_2):5,' String[..]');

readln;

end.

рис. 2.2. Окно задания 2 при выполнении

Задание 3

Создать программу работы с типом TDateTime. Она должна запрашивать дату и время рождения, выводить текущие дату/время, запрашивать желаемое время обучения, выводить дату/время и день недели конца обучения. На рис. 2 .3 показано окно работающего приложения задания 3.

Листинг программы

program Prg_2_3;

{$APPTYPE CONSOLE}

uses

SysUtils, RusTrans;

var

Date_1,Date_2,Time,DateTime:string;

DateTime_1,DateTime_2:TDateTime;

Day:integer;

begin

writeln(Rus('Введите дату рождения день.месяц.год'));

readln(Date_1);

writeln;

writeln(Rus('Введите время рождения часы.минуты.секунды'));

readln(Time);

writeln;

DateTime:=Date_1+Time;

DateTime_1:=StrToDateTime(DateTime);

DateTime_2:=Now;

writeln(Rus('Сегодня '),DateTimeToStr(Now));

writeln;

writeln(Rus('Сколько дней еще хотите учиться?'));

readln(Day);

writeln;

DateTime_2:=DateTime_2+Day;

Day:=DayOfWeek(DateTime_2);

writeln(Rus('Вы станете умным '), DateToStr(DateTime_2));

writeln(Rus('Это будет день недели номер '),Day);

readln;

end.

рис. 2.3. Окно задания 3 при выполнении

Выводы

  1. Программа на языке Delphi имеет следующую структуру:

  • Заголовок.

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

  • Раздел операторов, помещенный в операторные скобки beginend.

  • Точка, как признак конца программы.

  1. Для чисел возможны типы: вещественные, целые без знака и со знаком, 16-ричные.

  2. Вещественные числа запоминаются в формате с плавающей точкой. Для них лучше всего использовать тип real. При переходе к типу с меньшим размером теряется точность. При использовании типов с максимальными размерами потребная память увеличивается, но точность может не измениться. Для округления результатов используются типы вещественных чисел с ограниченной дробной частью: comp (0 разрядов) и currency (4 разрядов).

  3. Целые числа запоминаются в формате с фиксированной точкой. Для них лучше всего использовать тип integer. При переходе к типу с меньшим размером возможна грубая ошибка, если число не умещается в отведенную под него память. Целые числа без знака целесообразно использовать для уменьшения занимаемой памяти.

  4. Для работы с короткими строками используются типы ShortString, String [N до 255]. Это область в статической памяти, назначаемая при компиляции программы.

  5. Для работы с длинными строками используются типы String, AnsiString, WideString. Это указатели размером 4 байта, в которые помещается адрес начала строки в динамической памяти, назначаемый при исполнении программы.

  6. Операция + со строками выполняет конкатенацию (присоединение в конец) строк или символов.

  7. Для работы с датой и временем определен тип TDateTime. Он в формате вещественного числа содержит и дату (целая часть - число суток, прошедших с 30.12.1899) и время (дробная часть - часть суток, прошедших с 0 часов). Тип позволяет выполнять с датой/временем операции, как с вещественными числами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]