Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИКТ ответ.docx
Скачиваний:
3
Добавлен:
16.09.2019
Размер:
44.39 Кб
Скачать

5 вопрос

Данные целого типа

Достоинством языка Паскаль является возможность использования широкого набора разных типов данных. Тип данных определяет возможное значение констант, переменных, функций, выражений, принадлежащих к этому типу, форму представления в ЭВМ и операции, которые могут выполняться над ними. Все типы данных можно разделить на простые и сложные.

Простые типы – это стандартные и переменные типы данных. Стандартными являются целый INTEGER, действительный REAL, логический BOOLEAN и символьный CHAR типы данных. Переменные типы определяются пользователем ЭВМ. К ним относятся перечисляемый и ограниченный типы.

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

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

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

Константа целого типа (целая константа) – любое десятичное число, записанное без точки. Если константа отрицательная, то перед ней должен стоять знак «–», если константа положительная, то знак «+» можно опустить.

Целая константа выражает некоторое число абсолютно точно. Она необходима в том случае, когда какую-то величину нельзя представить приближённо, например, число живых существ (людей, животных), количество предметов и т. д. Примеры констант целого типа: 14, –357, 0, 5390.

Диапазон целых чисел зависит от конкретного типа ЭВМ. Для микроЭВМ с двубайтовым словом числа чаще всего находятся в диапазоне от –32768 до 32767.

Переменные, принимающие в качестве своих значений константы целого типа, относятся также к целому типу (тип INTEGER). Над данными целого типа можно выполнять следующие арифметические операции, которые дают целый результат: + (сложение), – (вычитание), * (умножение), DIV – деление с отбрасыванием дробной части (получение целого частного при делении целого данного на целое), MOD – получение целого остатка при делении целого данного на целое.

Например, пусть, A, B, N – переменные целого типа, принимающие значения А=25, В=2, N=–17. Тогда допустимы следующие операции:

А+51 (результат 76)

В–А (результат –23)

B*N (результат –34)

А DIV В (результат 12)

А MOD В (результат 1)

Операция MOD часто используется для определения, делится ли целое число Х без остатка на 2, т. е. является ли Х чётным числом.

С помощью операции Х MOD 2 вычисляется остаток. Если он равен нулю, то Х – чётное, а если имеется остаток, то нечётное. Точно также можно определить, кратно ли какое-то число трём, четырём и т. д.

Данные действительного типа

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

Константы с фиксированной точкой изображаются десятичным числом с дробной частью, которая может быть и нулевой. Дробная часть отделяется от целой с помощью точки, например 27.3, 5.0, –16.003, 200.59.

В математике для изображения очень больших и малых чисел используется запись числа с десятичным порядком. Например, число 680 000 000 можно записать 68

·107 (7 – порядок числа), число 0,00000005 можно записать так 5

·10–8 (–8 – порядок числа).

В языке Паскаль также можно изображать числа с десятичным порядком. Они имеют вид mEp. Здесь m – мантиса; E – признак записи числа с десятичным порядком; p – порядок числа. В качестве m могут быть целые числа и действительные числа с фиксированной точкой. В качестве p могут быть только целые числа. Как мантиса так и порядок могут содержать знаки «+» или «–».

Константами с плавающей точкой являются числа, представленные с десятичным порядком.

 Примеры чисел с плавающей точкой:

Математическая запись

Запись на языке Паскаль

4•10–5

4 Е –5

0,62•104

0.62 Е +4

–10,88•1012

–10.88 Е 12

Следует отметить, что в языке Паскаль знак умножения не ставится. Рассмотрим, например, числа с плавающей точкой:

0.547Е+3, 5.47Е+2, 54.7Е+1, 547.0Е–1, 54700Е–2.

Эти записи представляют одно и то же число 547. Перемещая положение десятичной точки в мантисе (точка «плывёт») и одновременно изменяя величину порядка, можно выбрать наиболее подходящее представление числа. Для микроЭВМ с двубайтовыми словами, как правило, самое малое по модулю число (не считая 0) 10–38 , а самое большое 1038.

Перевод действительных чисел в двоичную систему может быть неточным, поэтому действительные числа могут быть представлены в памяти ЭВМ с некоторым приближением. Например, вместо ожидаемого числа 0.517 мы можем получить число 0.516999.

Переменные действительного типа (REAL) – это переменные, которые в качестве своих значений принимают числа с фиксированной или плавающей точкой.

Над данными действительного типа можно выполнять следующие операции, дающие действительный результат: + (сложение), – (вычитание), * (умножение), / (деление).

Данные логического типа

Логический тип данных часто называют булевским по имени английского математика Д. Буля, создателя особой области математики – математической логики.

В языке Паскаль имеются две логические константы: TRUE (истина) и FILSE (ложь). Логическая переменная принимает одно из этих значений и имеет тип BOOLEAN.

Логические данные широко используются при проверке правильности некоторых условий и при сравнении величин. Результат может оказаться «истинным» или «ложным».

Для сравнения данных предусмотрены следующие операции отношений: < (меньше); <= (меньше или равно); = (равно); <> (не равно); >= (больше или равно); > (больше).

Если операцию отношения приложить  к арифметическим данным, то получим логическое значение: отношение истинно или ложно. Например, отношение 5>3 (читается «пять больше трех?») дает истинный результат (TRUE); отношение 5=3 (читается «пять равно трем?») дает ложный результат (FALSE).

Над логическими данными допускаются следующие операции: OR – логическое сложение (ИЛИ); AND – логическое умножение (И); NOT – логическое отрицание (НЕ). Логические операции OR и AND выполняются над двумя величинами, а операция NOT – над одной.

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

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

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

Логический тип определяется таким образом, что FALSE < TRUE.

Результаты операций над логическими данными:

A

B

NOT A

A OR B

A AND B

TRUE

TRUE

FALSE

TRUE

TRUE

TRUE

FALSE

FALSE

TRUE

FALSE

FALSE

TRUE

TRUE

TRUE

FALSE

FALSE

FALSE

TRUE

FALSE

FALSE

Например, результат операции (C>10) OR (D<3) будет истинным:

а) при С=12 и D=2;

б) при C=12 и D=5;

в) при C=8 и D=2;

будет ложным при C=12 и D=5.

Результат операции (С>10) AND (D<3) будет истинным при C=12 и D=2;

 будет ложным:

а) при C=12 и D=5;

б) при C=8 и D=5;

в) при C=8 и D=2.

Логические данные и операции над ними имеют важное значение в информатике, так как позволяют внести в расчеты элементы человеческой логики. При этом в теоретических расчетах в отличие от языка Паскаль часто вводят следующие обозначения логических констант: 1 – истина, 0 – ложь.

Данные символьного типа

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

Символьная, или литерная константа есть любой символ языка, заключенный в апострофы. Например, ’A’,  ’+’,  ’9’,  ’:’.

Чтобы представить апостроф как символьную константу, его повторяют дважды: ’’’’. Символьная константа, как правило, занимает один байт памяти.

Символьная переменная (тип CHAR) – это переменная, принимающая значение символьной константы. Так как символы языка Паскаль упорядочены, то к символьным данным применяются операции сравнения, например ’A’ > ’B’.

Описание констант и переменных стандартного типа

Константы в программе могут быть заданы явно своим значением или обозначены именем. Если константа обозначена именем, она должна быть описана в разделе констант. Описание начинается со служебного CONST и имеет следующую форму записи:

CONST  имя константы = значение ; 

 

Например, CONST N = 18;

В одном разделе допускается описание нескольких констант. Каждое описание заканчивается символом точка с запятой, например:

            CONST

                    NUM = 23;           {константа целого типа}

                          B = 1.8E-3;     {действительного типа}

                         PI = 3.14;         {действительного типа}

                      SIM = ’R’;          {символьного типа}

                           L = TRUE;     {логического типа}

Любая переменная, встречающаяся в программе, должна быть описана в разделе переменных.

Описание начинается со служебного слова VAR и имеет следующую форму записи: VAR  имя переменной : тип ;

В одном разделе допускается описание нескольких переменных, например:

                   VAR

                        B : INTEGER;     {переменная целого типа}

                 SUM : REAL;            {действительного типа}

                      K : CHAR;            {символьного типа}

                 LOG : BOOLEAN;    {логического типа}

Если несколько переменных имеют одинаковый тип, то их можно объединить в список. Под списком понимается последовательность элементов (в нашем случае – переменных), разделенных запятой. Например:

                       VAR

                             R, V : REAL;

                    K, L, TOR : INTEGER;

Здесь R, V – переменные действительного типа; K, L, TOR – переменные целого типа.

6 вопрос

Числовые типы данных Pascal-Паскаль

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

Описание числовых типов данных (целые) Паскаля

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

Числовые типы данных (ЦЕЛЫЕ ТИПЫ) Паскаля

Название числового типа данных

Длина, байт числового типа данных

Диапазон значений числового типа данных

Byte

1

0..255

ShortInt

1

-128..+127

Word

2

0..65535

Integer

2

-32768..+32767

LongInt

4

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

С целыми числовыми типами данных Паскаля можно выполнять следующие операции:

  • Арифметические: сложение(+); вычитание(-); умножение(*); остаток от деления (mod); возведение в степень; унарный плюс (+); унарный минус (-).

  • Операции отношения: отношение равенства (=); отношение неравенства (<>); отношение меньше (<); отношение больше (>); отношение не меньше (>=); отношение не больше (<=).

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

Особое внимание следует уделить операции деления целых числовых типов данных. В Паскале допускается две операции деления, которые соответственно обозначаются ‘/’ и div. Нужно знать, что результатом деления ‘/’ является не целое, а вещественное число (это справедливо, даже если вы делите 8 на 2, т.е. 8/2=4.0). Деление div – это целочисленное деление, т.е. тип результата целый.

Описание числовых типов данных (действительные) Паскаля

К вещественному числовому типу данных относится подмножество вещественных чисел, которые могут быть представлены в так называемом формате с плавающей запятой и фиксированным числом цифр. С плавающей точкой каждый числовой тип данных представляется в виде двух групп цифр. Первая группа цифр называется мантиссой, вторая – порядком. В общем виде числовой тип данных в форме с плавающей точкой может быть представлено так: X= {+|-}MP{+ | -} r, где M – мантисса числа; r – порядок числа (r – целое число); P – основание системы счисления. Например, для десятичного основания представление 2Е-1 (здесь Е – основание десятичной системы счисления) будет иметь вид: 2*10-1=0.2, а представление 1.234Е5 будет соответствовать: 1.234*105=123400.0.

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

Длина числового типа данных, байт

Название числового типа данных

Количество значащих цифр числового типа данных

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

4

Single

7..8

-45..+38

6

Real

11..12

-39..+38

8

Double

15..16

-324..+308

10

Extended

19..20

-4951..+4932

8

Comp

19 . .20

-2*1063 +1..+2*1063 -1

При описании вещественной переменной типа real в памяти компьютера будет создана переменная размерностью 4 байта. При этом 3 байта будут отданы под мантиссу, а один – под порядок.

Над действительными числовыми типами данных можно выполнять следующие операции:

  • Арифметические: сложение (+); вычитание(-); умножение(*); деление(/); возведение в степень; унарный плюс (+); унарный минус (-).

  • Операции отношения: отношение неравенства (<>); отношение меньше (<); отношение больше (>); отношение не меньше (>=); отношение не больше (<=).

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

Особое положение в Паскале занимает числовой тип данных comp, который трактуется как вещественное число без экспоненциальной и дробной частей. Фактически, comp – это «большое» целое число со знаком, сохраняющее 19..20 значащих десятичных цифр. В то же время числовой тип данных comp в выражениях полностью совместим с другими вещественными типами: над ним определены все вещественные операции, он может использоваться как аргумент математических функций и т.д.

О преобразовании числовых типов данных Паскаля

В Паскале почти невозможны неявные (автоматические) преобразования числовых типов данных. Исключение сделано только для типа integer, который разрешается использовать в выражениях типа real. Например, если переменные описаны следующим образом:

Var X : integer;  Y: real;

то оператор

Y := X+2;

будет синтаксически правильным, хотя справа от знака присваивания стоит целочисленное выражение, а слева – вещественная переменная, компилятор сделает преобразование числовых типов данных автоматически. Обратное же преобразование автоматически типа real в тип integer в Паскале невозможно. Вспомним, какое количество байт выделяется под переменные типа integer и real: под целочисленный тип данных integer выделяется 2 байта памяти, а под real – 6 байта. Для преобразования real в integer имеются две встроенные функции: round(x) округляет вещественное x до ближайшего целого, trunc(x) усекает вещественное число путем отбрасывания дробной части.

1. Условный оператор If.

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

Структура условного оператора:

If < условие> Then <оператор1> Else <оператор2>

Где < условие> - произвольное выражение логического типа;

<оператор1>, <оператор2> - любые операторы языка Турбо Паскаль.

Условный оператор работает по следующему алгоритму. Вначале вычисляется условное выражение < условие>. Если результат есть TRUE, товыполняется <оператор1>, а <оператор2> пропускается; если результат есть FALSE, наоборот, <оператор1> пропускается, а выполняется <оператор2>. Например:

Var

X, y, max: integer;

Begin

……

if x > max then

y:= max

else y:=x; При выполнении этого фрагмента переменная У получит значение переменной Х, если только это значение не превышает МАХ, в противном случае У станет = Мах.

Оператор выбора CASE.

Оператор выбора позволяет выбрать одно из нескольких возможных продолжении программы. Параметр по которому осуществляется выбор, служит ключ выбора – выражение любого порядкового типа (Real, String.)

Структура оператора:

CASE <ключ_выбора> OF <список_выбора> {Else <операторы>} END

Где CASE переводится как случай.

<ключ_выбора> - ключ выбора, <список_выбора> - одна или более конструкций вида: <костанта выбора>: <оператор>;

<костанта _выбора> - константа того же типа, что и выражение <ключ_выбора>.

Оператор выбора работает следующим образом. Вначале вычисляется значение выражения <ключ_выбора>, а затем в последовательности операторов <список_выбора> отыскивается такой, которому предшедствует костанта, равная вычисленному значеню. Найденный оператор выполняется, после чего оператор выбора завершает свою работу. Если в списке выбора не будет найдена константа, соответсвующая вычисленному значению ключа выбора, управление передаётся операторам, стоящим за словом ELSE.

Пример. Var

Ch:char; begin ReadLn(ch); case ch of

‘n’, ‘N’: Writeln (‘Нет’);

‘y’, ‘Y’: Writeln(‘Да’)

end

end.

В этой программе при вводе одного из символов: у или У выведет на экран слово «ДА», а при вводе n или N - слово “НЕТ”.

2. Оператор цикла с параметром For.

Структура:

For <пар_цикл> := <нач_знач> То <кон_знач> Do <оператор>.

<пар_цикл> - параметр цикла – переменная цикла Integer;

<нач_знач> - начальное значение – выражение того же типа;

<кон_знач> - конечное значение - выражение того же типа.

При выполнении оператора FOR вначале вычисляется выражение <нач_знач> и осуществляется присваивание <пар_цикл> := <нач_знач>.

После этого циклически повторяется:

  • Проверка условия <пар_цик> <= <кон_знач>; если условие не выполняется, оператор For завершает работу;

  • Выполнение оператора <оператор>;

  • Наращивание переменной <пар_цик> на еденицу.

Пр. Ввод с клавы произвольного целого числа N и суммы всех целых чисел от 1 до N/

Program Sum_OF_integer;

Var i, n, s: integr;

Begin Write (‘N=’);

Readln (n); - вводим N

S:=0; - начальное значение суммы

For i:=1 to n do – цикл подсчёта суммы

S:=s+i;

Writeln (‘Сумма = ‘, s) – выводим результат

End. В этом примере шаг наращивания параметра цикла строго постоянен и равен (+1). Сущ. другая форма оператора:

For <пар.цикл>:=<нач.знач> Downto <кон.знач> Do <оператор>

Замена зарезервированного слова To на Downto означает, что шаг наращивания параметра цикла равен (-1), а управляющее условие приобретает вид <пар.цикл> = <кон.знач>. Теперь можно подсчитывать и отрицательные суммы.

4. While с предпроверкой условия:

While <условие> Do <оператор>.

Где While – пока;

<условие> - выражение логического типа.

Если выражение <условие> имеет хзначение True, то выполняется <оператор>, после чего вычисление выпажение <условие> и его проверка повторяется. Если <условие> имеет значение False, то опертор While прекращает работу.

Пр. найдём “машинное эпсилн” – такое минимальное, не равное 0 вещественное число, которое после прибавления его к 1.0 даёт результат отличный от 1.0

Program Epsilon;

Var epsilon: real;

Begin epsilon :=1; while epsilon/2 + 1 > do

Epsilon:= epsilon/2

Writeln (‘Машинное эпсилон =’, epsilon) end.

5. Repeat с постпроверкой условия:

Repeat <тело_цикла> Until <условие>.

Где <тело_цикла> - произвольная последовательность операторов Турбо Паскаля. Операторы <тело_цикла> выполняется хотя бы один раз, после чего вычисляется выпажение <условие>: если его значение есть False, операторы <тело_цикла> повторяются, в противном случае оператор Repeat…UNTIL завершает свою работу.

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

Program codes

Var ch: char; - вводимы символ

Const

Cr=13; - код символаCR

Begin repeat Readln(ch);

Writeln(ch, ‘ =‘, ord (ch))

Until ord (ch) = Cr END.

7 вопрос

Строковый тип данных в Паскале

Пнд, 03/07/2011 - 19:49 — tech

Строки в Паскале – это данные типа string. Они используются для хранения последовательностей символов. В Паскале длина стандартной строки ограничена 255 символами. Под каждый символ отводится по одному байту, в котором хранится код символа. Кроме того, каждая строка содержит еще дополнительный байт, в котором хранится длина строки.

Если заранее известно, что длина строки будет меньше 255 символов, то программист может сам задать максимальную длину строки.

Примеры описания строк:

type

str_type = string[12];

const

n = 50;

var

s1: string;

s2, s3: str_type;

s4: string[n];

s5, s6, s7: string[7];

Длина строки хранится в первом ее байте, индекс которого равен 0. Объявление типизированной константы для типа string осуществляется так:

const

s: string = 'FreePascal'

Существует понятие пустой строки, т.е. строки, которая не имеет элементов. Пустая строка обозначается двумя рядом стоящими апострофами (например, st := '').

Операции над строками

Строки можно присваивать друг другу. Если максимальная длина переменной слева меньше длины присваиваемой строки, то лишние символы справа отбрасываются.

s1 := 'this is text';

s2 := s1;

Строки можно объединять с помощью операции конкатенации, которая обозначается знаком +.

s1 := 'John';

s2 := 'Black';

s1 := s1 + ' ' + s2;

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

'abc' > 'ab' (true)

'abc' = 'abc' (true)

'abc' < 'abc ' (false)

Имя строки может использоваться в процедурах ввода-вывода. При вводе в строку считывается из входного потока количество символов, равное длине строки или меньшее, если символ перевода строки (который вводится нажатием клавиши Enter) встретится раньше. При выводе под строку отводится количество позиций, равное ее фактической длине.

readln (s1);

write (s1);

К отдельному символу строки можно обращаться как к элементу массива символов, например s1[3]. Символ строки совместим с типом char, их можно использовать в выражениях одновременно, например:

s1[3] := 'h';

writeln (s2[3] + 'r');

Можно осуществлять коррекцию любого символа строковой переменной, для чего в соответствующем операторе достаточно указать имя переменной типа string, вслед за которым в квадратных скобках задается номер ее элемента (например, str[3]:='j').

Элементы строки нумеруются с единицы, т.к. в каждой строковой переменной имеется элемент с номером 0, в котором в виде символа хранится длина текущей строки. Чтобы узнать текущую длину, достаточно применить функцию ord к нулевому элементу строки. Например:

writeln(ord(st[0]))

Нулевой элемент строковой переменной можно корректировать. При этом будет изменяться текущая длина строки. Например, выражение str[0]:=#50 устанавливает текущую длину равной 50.

9-10 вопросы