Главная страница
Навигация по странице:

  • Теоретическая часть. Основные типы данных в Object Pascal.

  • Название

  • Таблица 2.2. Стандартные процедуры и функции, применимые к целым типам

  • Обращение

  • Таблица 2.3. Кодировка символов в соответствии со стандартом ANSI

  • Информатика21-22. Методические указания по курсу Информатика Пятигорск 2020 Лабораторная работа 1


    Скачать 4.27 Mb.
    НазваниеМетодические указания по курсу Информатика Пятигорск 2020 Лабораторная работа 1
    Дата31.03.2022
    Размер4.27 Mb.
    Формат файлаdocx
    Имя файлаИнформатика21-22.docx
    ТипМетодические указания
    #431282
    страница2 из 12
    1   2   3   4   5   6   7   8   9   ...   12

    Лабораторная работа № 2.


    Тема. Основы объектно-ориентированного программирования. Система визуального программирования Borland Delphi. Создание интерфейса программы. Визуальные компоненты для ввода и вывода данных.

    Основные вопросы:

    • Основные типы данных в Object Pascal.

    • Компоненты для ввода и вывода данных.

    • Надпись Label. Поле Edit.

    • Кнопка Button.

    • Счётчик UpDown.

    • Поле Memo.

    • Основные свойства компонентов.

    • Вычисления в программе.

    • Группировка компонентов с использованием фреймов. Теоретическая часть.

    Основные типы данных в Object Pascal.

    При создании любой программы (кроме самой элементарной) используются переменные величины. Любая используемая в программе переменная относится к определённому типу данных. Имя и тип переменной всегда задаётся до начала её использования в программе в блоке объявления переменных. В Delphi используется множество различных типов переменных. Все типы переменных можно разделить на шесть основных подразделов:

    • Простой тип;

    • Строковый тип;

    • Структурный (структурированный) тип;

    • Указательный тип;

    • Процедурный тип;

    • Вариантный тип.

    Простые типы

    К простым типам относятся порядковые, вещественные типы и тип дата-время.

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

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

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

    Порядковые типы

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



    Рис. 2.1. Структура типов данных

    Для целых типов функция ord(x) возвращает само значение х, т. е. Ord(X) = х для х, принадлежащего любому целому типу. Применение Ord(x) к логическому, символьному и перечисляемому типам дает положительное целое число в диапазоне от 0 до 1 (логический тип), от 0 до 255 (символьный), от 0 до 65535 (перечисляемый). Тип-диапазон сохраняет все свойства базового порядкового типа, поэтому результат применения к нему функции ord(X) зависит от свойств этого типа.

    К порядковым типам можно также применять функции:

    pred(x) - возвращает предыдущее значение порядкового типа (значение, которое соответствует порядковому номеру

    ord (X) -1), т. е. Ord(Pred(X)) = Ord(X) - 1;

    succ (X) - возвращает следующее значение порядкового типа, которое соответствует порядковому номеру ord (X) +1, т. е.т Ord(Succ(X)) = Ord(X) + 1.

    Например, если в программе определена переменная

    var

    с : Char;

    begin

    с := '5';

    end;

    то функция PRED(C) вернет символ '4', а функция SUCC(C) - символ '6'.

    Если представить себе любой порядковый тип как упорядоченное множество значений, возрастающих слева направо и занимающих на числовой оси некоторый отрезок, то функция pred(x) не определена для левого, a succ (X) - для правого конца этого отрезка.

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


    Таблица 2.1. Целые типы

    Название

    Длина,байт

    Диапазон значений

    Cardinal

    4

    0. .. 2 147 483 647

    Byte

    1

    0...255

    Shortint

    1

    -128...+127

    Smallint

    2

    -32 768...+32 767

    Word

    2

    0...65 535

    Integer

    4

    -2 147 483 648...+2 147 483 647

    Longint

    4

    -2 147 483 648...+2 147 483 647

    Int64

    8

    -9*1018. ..+9*1018

    LongWord

    4

    0. . .4 294 967 295

    Типы LongWord и Int64 впервые введены в версии 4, а типы Smallint и Cardinal отсутствуют в Delphi 1. Тип integer для этой версии занимает 2 байта и имеет диапазон значений от -32768 до +32767, т. е. совпадает с Smallint.

    При использовании процедур и функций с целочисленными параметрами следует руководствоваться “вложенностью” типов, т. е. везде, где может использоваться word, допускается использование Byte (но не наоборот), в Longint “входит” Smallint, который, в свою очередь, включает в себя Shortint.

    Перечень процедур и функций, применимых к целочисленным типам, приведен в табл. 7.2. Буквами b, s, w, i, l обозначены выражения соответственно типа Byte, Shortint, Word, Integer И Longint,

    х - выражение любого из этих типов; буквы vb, vs, vw, vi, vl, vx обозначают переменные соответствующих типов. В квадратных скобках указывается необязательный параметр.

    Таблица 2.2. Стандартные процедуры и функции, применимые к целым типам

    Обращение

    Тип результата

    Действие

    abs (x)

    x

    Возвращает модуль x

    chr(b)

    Char

    Возвращает символ по его коду

    dec (vx [, i] )

    -

    Уменьшает значение vx на i, а при отсутствии i - на 1

    inc(vx[,i])

    -

    Увеличивает значение vx на i, а при отсутствии i -на 1

    Hi(w)

    Byte

    Возвращает старший бант аргумента

    Hi(I)

    То же

    Возвращает третий по счету байт

    Lo(i)



    Возвращает младший байт аргумента

    Lo(w)



    То же

    odd(l)

    Boolean

    Возвращает True, если аргумент-нечетное число

    Random(w)

    Как у параметра

    Возвращает псевдослучайное число, равномерно распределенное в диапазоне 0...(w-l)

    sqr(x)

    X

    Возвращает квадрат аргумента

    swap(i)

    Integer

    Меняет местами байты в слове

    swap (w)

    Word

    Тоже

    При действиях с целыми числами тип результата будет соответствовать типу операндов, а если операнды относятся к различным целым типам - общему типу, который включает в себя оба операнда. Например, при действиях с shortint и word общим будет тип integer. В стандартной настройке компилятор Delphi не вырабатывает код, осуществляющий контроль за возможной проверкой выхода значения из допустимого диапазона, что может привести к недоразумениям.

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

    procedure TfmExample.bbRunClick(Sender: TObject) ;

    var

    k: Word;

    begin

    k := 65535; // Максимальное значение типа Word

    k := k+1; // По правилам математики

    k=65536 IbOutput.Caption := IntToStr(k); // На самом деле k=0!

    end;

    Если активизировать переключатель project | options | Compiler I Range checking и повторить компиляцию с помощью Project | Build All, компилятор вставит в программу код проверки переполнения и при прогоне программы возникнет исключительная ситуация, которую при желании можно соответствующим образом обработать. Замечу, что, если изменить программу следующим образом:

    k := 65535; // Максимальное значение типа Word

    IbOutput.Caption := IntToStr(k + 1);// Будет выведено 65536

    переполнения не произойдет, т. к. 32-разрядный компилятор версий Delphi 32 автоматически преобразует операнды выражения k+i к 4-байтным величинам.

    Логические типы. К логическим относятся типы Boolean, ByteBool, Bool, wordBool и LongBool. В стандартном Паскале определен только тип Boolean, остальные логические типы введены в Object Pascal для совместимости с Windows: типы Boolean и ByteBool занимают по одному байту каждый, Bool и WordBool - по 2 байта, LongBool - 4 байта. Значениями логического типа может быть одна из предварительно объявленных констант False (ложь) или True (истина). Для них справедливы правила:

    Ord(False) = 0;

    Ord(True) <> 0;

    Succ(False)= True;

    Pred(True) = False.

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

    var

    l : Boolean;

    begin

    for l := False to True do ....

    Однако необходимо помнить, что в Delphi 32 для Boolean значение

    Ord (True) = +1, В ТО Время как для других типов (Bool, WordBool И Т.Д.)

    Ord (True) = -1, поэтому такого рода операторы следует использовать с осторожностью!. Например, для версии Delphi 6 исполняемый оператор showMessage (' --- ') в следующем цикле for не будет выполнен ни разу:

    var

    L: Bool;

    k: Integer;

    begin

    for L := False to True do ShowMessage ('--);

    end; __

    Если заменить тип параметра цикла l в предыдущем примере на Boolean, цикл будет работать и сообщение дважды появится на экране.[Для Delphi версии 1 и 2 ord (True) =+1 для любого логического типа.]

    Символьный тип. Значениями символьного типа является множество всех символов ПК. Каждому символу приписывается целое число в диапазоне О...255. Это число служит кодом внутреннего представления символа, его возвращает функция ord.

    Для кодировки в Windows используется код ANSI (назван по имени American National Standard Institute - американского института стандартизации, предложившего этот код). Первая половина символов ПК с кодами 0... 127 соответствует таблице 2.3. Вторая половина символов с кодами 128...255 меняется для различных шрифтов. Стандартные Windows-шрифты Arial Cyr, Courier New Cyr и Times New Roman для представления символов кириллицы (без букв “ё” и “Ё”) используют последние 64 кода (от 192 до 256): “А”... “Я” кодируются значениями 192..223, “а”... “я” - 224...255. Символы “Ё” и “ё” имеют соответственно коды 168 и 184.

    Таблица 2.3. Кодировка символов в соответствии со стандартом ANSI

    Код

    Символ

    Код.

    Символ

    Код.

    Символ

    Код

    Символ

    0

    NUL

    32

    BL

    64

    @

    96

    '

    1

    ЗОН

    33

    !

    65

    А

    97

    а

    2

    STX

    34



    66

    В

    98

    b

    3

    ЕТХ

    35

    #

    67

    С

    99

    с

    4

    EOT

    36

    $

    68

    D

    100

    d

    5

    ENQ

    37

    %

    69

    Е

    101

    е

    6

    ACK

    38

    &

    70

    F

    102

    f

    7

    BEL

    39

    '

    71

    G

    103

    д

    8'

    BS

    40

    (

    72

    Н

    104

    h

    9

    HT

    41

    )

    73

    I

    105

    i

    10

    LF

    42

    *

    74

    J

    106

    j

    11

    VT

    43

    +

    75

    К

    107

    k

    12

    FF

    44

    f

    76

    L

    108

    1

    13

    CR

    45

    -

    77

    М

    109

    m

    14

    SO

    46




    78

    N

    110

    n

    15

    SI

    47

    /

    79

    0

    111

    о

    16

    DEL

    48

    0

    80

    Р

    112

    P

    17

    DC1

    49

    1

    81

    Q

    113

    q

    18

    DC2

    50

    2

    82

    R

    114

    r

    19

    DC3

    51

    3

    83

    S

    115

    s

    20

    DC 4

    52

    4

    84

    Т

    116

    t

    21

    NAK

    53

    5

    85

    U

    117

    u

    22

    SYN

    54

    6

    86

    V

    118

    v

    23

    ETB

    55

    7

    87

    W

    119

    W

    24

    CAN

    56

    8

    88

    х

    120

    x

    25

    EM

    57

    9

    89

    Y

    121

    У

    26

    SUB

    58

    :

    90

    Z

    .122

    z

    27

    ESC

    59

    ;

    91

    t

    123

    {

    28

    FS

    60

    <

    92

    \

    124

    1

    29

    GS

    61

    =

    93

    ]

    125

    }

    30

    RS

    62

    >

    94

    Л

    126



    31

    US

    63

    f

    95




    127

    r

    Символы с кодами 0...31 относятся к служебным кодам. Если эти коды используются в символьном тексте программы, они считаются пробелами.

    К типу char применимы операции отношения, а также встроенные функции:

    Сhr (в) - функция типа char; преобразует выражение в типа Byte в символ и возвращает его своим значением;

    UpCase(CH) - функция типа char; возвращает прописную букву, если сн - строчная латинская буква, в противном случае возвращает сам символ сн (для кириллицы возвращает исходный символ).

    Перечисляемый тип. Перечисляемый тип задается перечислением тех значений, которые он может получать. Каждое значение именуется некоторым идентификатором и располагается в списке, обрамленном круглыми скобками, например:
    1   2   3   4   5   6   7   8   9   ...   12


    написать администратору сайта