Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

GOSY / 1 блок-все-шпора(печать)

.pdf
Скачиваний:
37
Добавлен:
09.05.2015
Размер:
1.57 Mб
Скачать

3. Типы данных в системе программирования Turbo Pascal: простые типы, понятие о составных типах данных.…

Для обработки ЭВМ данные представляются в виде величин и их совокупностей. С понятием величины связаны такая важная характеристика, как ее тип.

Тип определяет:

1.возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу;

2.внутреннюю форму представления данных в ЭВМ;

3.операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.

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

Иерархия типов: Простые

1.Порядковые (Целые, Логические, Символьные, Перечисляемые, Интервальные).

2.Вещественные

Структурированные Массивы, Строки, Множества, Записи, Файлы, Указатели.

Простые типы данных

Целые типы: к ним применимы операции: +, -, /, *, Div, Mod,>=, <=, =, <>, <, >.

integer: длина 2байта; диапазон 32768..32767; byte: 1; 0..255;

word: 2; 0..65535; shortint: 1; -128..127;

longint: 4; -2147483648 .. 2147483647

Вещественные типы: к ним применимы операции: +, -, /, *, >=, <=, =, <>, <, >.

real: 6; 2,9x10-39 - 1,7x1038; single: 4; 1,5x10-45 - 3,4x1038; double: 8; 5x10-324 - 1,7x10308;

extended: 10; 3,4x10-4932 - 1,1x104932;

Логический тип:

boolean: 1; true, false; Not, And, Or, Xor,>=, <=, =, <>, <, >;

Символьный тип:

char: 1; все символы кода ASCII; +,>=, <=, =, <>, <, >

21

Этот тип задает множ-во наборов (строк), состоящих из произвольных символов алфавита. Со знач-ми этого типа может вып-ся (бинарная) операция сцепления. Результат - строка, возникающая при сцеплении исходных строк, осуществляемом приписыванием к концу одной строки начала другой строки. Для представления данных в компьютере сущ-ет двоичная кодировка команд и данных. Для того, чтобы обеспечить простую и удобную кодировку цифр, знаков, чисел, знаков препинания использ-ся спец. таблица кодировки. Под хранение одного элем-та выделяется 1 байт памяти. Каждому коду от 0 до 255 в таблице ставится в соотв-вие знак, кот-ый будет являться кодом этого знака. Первые 32 кода – спец-ые управляющие коды, кот-ые соотв-ют опред-ым командам.

Кроме этого в кодовой таблице имеются большие и маленькие англ. буквы, цифры, знаки препинания, матем. знаки, псевдографика. Если на экран подается опред-ый код, то на экране высвечивается соотв-щий знак, и если в редакторе использ-ся какой – то знак, то в файле будет храниться его код. Перем-ые типа char хранят коды знаков. Знаки и текст в Паскале обознач. одинарными кавычками, а знак # (диез) обознач. номер знака по кодовой таблице.

Функции которые работают с символами. chr (код) дает знак по коду

ord (знак) дает код по знаку b:=chr (ord (‗a‘)) b= ‘a‘

# код= chr (код) – Пример: # 27 – знак клавиши Escape. Т. к. знаки – это порядковый тип, то действуют 2 функ-и.

Pred (x) = x-1 pred (10) = 9 Succ (x) = x+1 succ (10) = 11

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

1.все возможные значения порядкового типа представляют собой ограниченное упорядоченное множество;

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

3.к любому порядковому типу могут быть применены стандартные функции Pred и Succ, которые возвращают предыдущее и последующее значения соответственно;

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

22

Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется одно из двух условий:

1.Т1 и Т2 представляют собой одно и то же имя типа;

2.тип Т2 описан с использованием типа Т1 с помощью равенства или последовательности равенств.

Например: type

T1 = Integer;

T2 = T1; T3 = T2;

Типы являются совместимыми, если:

1.они эквивалентны;

2.являются оба либо целыми, либо действительными;

3.один тип - интервальный, другой - его базовый;

4.оба интервальные с общим базовым;

5.один тип - строковый, другой - символьный.

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

Имя_Тип (переменная или значение)

Напрмер, Integer('Z') представляет собой значение кода символа 'Z' в двухбайтном представлении целого числа, а Byte(534) даст значение 22, поскольку целое число 534 имеет тип Word и занимает два байта, а тип Byte занимает один байт, и в процессе приведения старший байт будет отброшен. Переменной называют элемент программы, который предназначен для хранения, коррекции и передачи данных внутри программы. Все переменные программы в Турбо Паскаль должны быть объявлены в разделе описания переменных.

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

Стандартные виды констант:

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

2.Вещественные константы. Могут быть определены числами, записанными в десятичном формате данных с использованием десятичной точки.

3.Символьные константы. Могут быть определены посредством некоторого символа, заключенного в апострофы.

4.Строковые константы. Могут быть определены последовательностью произвольных символов (заключенных в апострофы).

23

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

Например:

year: integer = 2001; symb: char = '?'; money: real = 57.23;

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

Массив – последовательность, состоящая из фиксированного числа однотипных элементов. Все элементы имеют общее имя и различные индексы. type <имя> = array[<список типов индексов>] of <тип элементов>

Строка – последовательность символов. string(n), n<=255 concat(s1,…,sk) – соединяет строки, не более 255 символов. length(s) – количество символов строки.

copy(s,i,k) – из строки s выделяется k символов, начиная с i. str(k,s) – число в строку

val(s,k,i) – строка из цифр в число, i=0, если в строке нет символов, отличных от цифр, иначе i= позиция первого числа, отличного от цифры.

pos(s,t) – номер позиции, начиная с которого строка s входит первый раз в строку t.

insert(s,t,i) – строка s вставляется в t, начиная с позиции i delete(s,i,k) – из s удаляется k символов, начиная с i.

Множество – неупорядоченная совокупность отличных друг от друга однотипных элементов.

type <имя> = set of <тип элем.>

Прямого доступа к элементам множества нет используют in. Оператор включения in x in A: true, если x принадлежит А.

Запись – последовательность, состоящая из фиксированного числа величин различных типов (поля).

type <имя> = record

<имя поля 1>: <тип>;

<имя поля N>: <тип>; end;

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

24

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

Программист объединяет в одну группу в соответствии с каким-либо признаком всю совокупность значений, составляющих перечисляемый тип. Например, перечисляемый тип Rainbow (РАДУГА) объединяет скалярные значения RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET

Перечисляемый тип Traffic_Light (СВЕТОФОР) объединяет скалярные значения RED, YELLOW, GREEN.

Перечисляемый тип описывается в разделе описания типов: type

Rainbow = (RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET);

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

Например, перечисляемый тип Traffic_Light не может быть определен в одной программе с типом Rainbow, так как оба типа содержат одинаковые константы. Описание переменных, принадлежащих к скалярным типам, которые объявлены в разделе описания типов, производится с помощью имен типов. Например:

type

Traffic_Light= (RED, YELLOW, GREEN); var

Section: Traffic_Light;

Это означает, что переменная Section может принимать значения RED, YELLOW или GREEN.

Переменные перечисляемого типа могут быть описаны в разделе описания переменных, например:

var Section: (RED, YELLOW, GREEN);

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

Section:= YELLOW;

Упорядоченная последовательность значений, составляющих перечисляемый тип, автоматически нумеруется, начиная с нуля и далее через единицу. Значит, к перечисляемым переменным и константам могут быть применены операции отношения и стандартные функции Pred, Succ, Ord.

Интервальный тип данных Отрезок (диапазон значений) любого порядкового типа может быть определен

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

25

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

1..10 -15..25 'a'..'z'

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

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

Математические операции * умножение; 2*3 (результат: 6)

/ деление; 30/2 (результат: 1.5 E + 01) + сложение; 2+3 (результат: 5)

- вычитание; 5-3 (результат: 2) div целочисленное деление;

5 div 2 (результат: 2) mod остаток от деления; 5 mod 2 (результат: 1)

Логические операции

NOT - логическое отрицание ("НЕ")

AND - логическое умножение ("И")

OR - логическое сложение ("ИЛИ") XOR - логическое "Исключающее ИЛИ" Операции отношения > - больше < - меньше = - равно

<> - не равно >= - больше или равно

<= - меньше или равно В операциях отношения могут принимать участие не только числа, но и

символы, строки, множества и указатели. Приоритет операций

Порядок вычисления выражения определяется старшинством (приоритетом) содержащихся в нем операций:

унарная операция not, унарный минус -, взятие адреса @

 

операции типа умножения:

* / div mod and

 

операции типа сложения: +

- or xor

операции отношения: = <> < > <= >= in

Порядок выполнения операций переопределить можно с помощью скобок. Основные математические функции

26

Приведем основные математические функции, встроенные в системную библиотеку Турбо Паскаль.

Abs(X) Возвращает абсолютное значение числа X.

Cos(X), Sin(X) Возвращает косинус (синус) числа X, где X - угол в радианах. Функций тангенс и котангенс в Турбо Паскале нет. Для их вычисления используйте выражение sin(x)/cos(x) (или cos(x)/sin(x) для котангенса). ArcTan(X) Возвращает арктангенc числа X.

Exp(X) Возвращает число, равное e в степени X.

Ln(x) Возвращает число, равное натуральному логарифму от числа X. Pi Число Пи.

Sqr(X) Возвращает число, равное квадрату числа X.

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

Sqrt(X) Возвращает число, равное квадратному корню из числа X. Trunc(X) Возвращает число, равное целой части числа X. (Происходит отбрасывание дробной части числа X. Результат выполнения имеет тип

Longint).

Frac(X) Возвращает число, равное дробной части числа X.

Int(X) Возвращает число, равное целой части числа X. Результат выполнения функции - real.

Round(X) Функция округляет число X. Возвращаемое значение имеет тип

Longint.

Random(X) Возвращает случайное целое число в диапазоне 0..X. Если аргумент опущен (Random), то возвращается случайное вещественное число от 0 до 1. Перед использованием random в программах рекомендуется сначала инициализировать генератор псевдослучайных чисел процедурой Randomize. В противном случае при каждом запуске программы будет генерироваться одна и та же последовательность случайных чисел.

Inc(X,Y) Увеличивает значение числа X на Y. Если число Y не указано, то увеличение происходит на 1.

Dec(X,Y) Уменьшает значение числа X на Y. Если число Y не указано, то уменьшение происходит на 1.

Логические выражения - это отношение, либо формула, составленная из отношений, круглых скобок и символов логических операций. Результат их вычисления может принимать только одно из 2х допустимых значенийtrue(истина) и false(ложь). Чаще всего значение false ассоциируется с 0, а значение true- с 1 или просто ненулевым значением. При записи логических выражений используются операции сравнения и логических операции. Операции сравнения сличают значения левого и правого операндов. Результатом сравнения является true, если оно удачно, и false в противном случае.

27

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

28

4. Реализация циклов в языке программирования Turbo Pascal. Цикл с известным числом повторений. Циклы с предусловием и постусловием. Массивы и их реализация в языке программирования Turbo Pascal.

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

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

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

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

Для программирования повторяющихся заданное количество раз фрагмент программ в языке Паскаль имеется оператор цикла со счетчиком (часто его называют оператором цикла с параметром).

Синтаксическая запись оператора цикла:FOR i:=n TO k DO или FOR i:=n DOWNTO k DO. Оператор for вызывает оператор, находящийся после слова do, по одному разу для каждого значения в диапазоне от значения 1 до значения 2. Со словом to, значение переменной цикла увеличивается на 1 при каждой итерации цикла. Со словом downto, значение переменной цикла уменьшается на 1 при каждой итерации цикла. Не следует самостоятельно изменять значение управляющей переменной внутри цикла.

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

Если требуется повторить группу действий, то оператор выглядит следующим образом.

FOR i:=n TO k DO BEGIN

оператор 1; оператор 2;

…………

оператор n END;

29

1)Счетчик изменяется на единицу при каждом следующем исполнении оператора цикла.

2)Для правильной записи конструкции оператора необходимо помнить: переменные i, n, k – могут быть только переменными так называемого «порядкового цикла», это тип, в котором каждое данное имеет свой номер, свое расположение среди других данных этого типа. Мы будем говорить об этом в следующих главах (пока мы изучили только один порядковый тип – integer).

3)Не забывайте, что счетчику присваивается начальное значение, т.е. i =

начальное значение.

4)Если начальное значение совпадает с конечным значением, то операторы цикла (еще говорят «тело цикла») выполняются один раз.

5)Если начальное значение счетчика больше конечного значения, то тело цикла не выполнится ни разу.

6)При выходе из цикла значение счетчика совпадает с конечным значением,

т.е. i = k.

Итерационные циклы с предусловием

Синтаксис: while <условие> do оператор

Оператор после do будет выполняться до тех пор, пока логическое выражение принимает истинное значение (True). Логическое выражение является условием возобновления цикла. Его истинность проверяется каждый раз перед очередным повторением оператора цикла, который будет выполняться лишь до тех пор, пока логическое выражение истинно. Как только логическое выражение принимает значение ложь (False), осуществляется переход к оператору, следующему за while.

Выражение оценивается до выполнения оператора, так что если оно с самого начала было ложным (False), то оператор не будет выполнен ни разу.

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

Пример. eps:=0.001;

while x > eps do x:=x/2;

Итерационные циклы с постусловием

Синтаксис: repeat тело цикла until <условие>

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

Пример.

30

Соседние файлы в папке GOSY