Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Раздел описания типов данных





Тип данных может быть описан либо непосредственно в разделе описания переменных, либо определяться идентификатором типа. Стандартные типы не требуют описания. Выбор описания типа зависит от программиста и специфики программ.

Раздел описания типов данных начинается зарезервированным словом type, за которым следуют одно или несколько определений типов (integer, real, char, boolean и т.д), разделенных точкой с запятой.

Формат:

type < имя типа >=<значение типа>

Например:

Type

LatLetter=(‘ A ’.. ’ z ’);

Days = 1.. 31;

Mart = array [1.. 10] of integer;

 

Каждое описание задает множество значений и связывает с этим множеством некоторое имя типа.


Раздел описания переменных

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

Формат:

Var

<идентификатор,..>: <тип>;

Например:

var {описание раздела переменных}

A,B, Proizved: integer; {переменные А,В, Proizved – целые}

X, h, sum: real;

D, l, r: string;

Раздел описания процедур и функций

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

Раздел операторов

Это основной раздел программы. Раздел операторов начинается словом begin, далее следует оператор языка. Завершает раздел зарезервированное слово end.

Например:

begin {начало программы}

Write(‘введите значение целого числа A>’); {ввод запроса на экран}

Readln(A);

Write(‘введите значение целого числа B>’);

Readln(B);

P:=A*B; {вычисление переменной P}

Write(‘произведение чисел ‘,A,’ и ‘,B’ = ‘, P); {вывод ответа}

end. {конец программы}

 

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

 


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

 

1. укажите буквы, символы, составные символы:

^, Y, <>, +, *, R, k, $,!, ы

2. что в списке можно рассматривать как идентификаторы:

FIO, ФИО, 22222, X, Y, >=, &, Summa, _Result

3. укажите идентификаторы, которые проще воспринимаются при чтении, объясните причину:

klass1; Klass_1; Summadoxoda; SummaDoxoda; Nomedoma; Number_Home

4. сколько в следующем списке зарезервированных слов:

X, Program, Y, Summa, MyMoney, произведение, Vova, begin, end, if repeat, Read?

5. есть ли причины к невыполнению следующей программы:

program Test;

begin

end.


Лекция №2.

Тема: «Типы данных»

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

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

1. Простые типы:

Целые типы

Логические

Символьные

Перечисляемые

Интервальные

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

Ссылочные

2. Структурированные типы:

Строковый

Регулярный

Комбинированный

Множественный

Файловый

Процедурные типы.

Целые типы

В языке Турбо Паскаль определено 5 целых типов:

· Shortint (-128... 127, 1 байт),

· Integer (-32767... 32768, 2 байта),

· Longint (-2147483648... 2147483647, 4 байта),

· Byte (0... 255, 1 байт),

· Word (0... 65535, 2 байта).

Над данными целого типа можно выполнять операции: сложение, вычитание, умножение, div – деление с отбрасыванием дробной части (получение целого частного при делении целого данного на целое), mod – получение целого остатка при делении целого данного на целое.

Операция mod часто используется для определения, делится ли целое число X без остатка на 2, т.е., является ли X четным числом. Если остаток равен нулю, то число X – четное, а если имеется остаток, то нечетное.

Кроме того, имеется большое количество встроенных функций для работы с целыми числами, например:

Abs – возвращает модуль числа;

Sqr – возвращает квадрат числа;

Sqrt – возвращает значение корня квадратного из числа;

Sin, Cos, Exp, ln и др.

Вещественные типы

В Турбо Паскале имеется 5 вещественных типов.

· Real (занимает 6 байт, диапазон от 2.9E-39 до 1.7E+38 по модулю, точность 11-12 значащих цифр)

· Single (занимает 4 байта, диапазон от 1.5E-45 до 3.4E+38 по модулю, точность 7-8 значащих цифр)

· Double (занимает 8 байт, диапазон от 5.0Е-324 до 1.7Е+308по модулю,точность 15-16 значащих цифр)

· Extended (занимает 10 байт, диапазон от 3.4E-4932 до 1.1E+4932 по модулю, точность19-20 значащих цифр).

· Comp (занимает 8 байт, диапазон от -9.2E-18 до 9.2E+18, хранятся точно, поскольку это целые числа)

Данные вещественного типа могут представлены в двух видах: с фиксированной точкой и плавающей точкой.

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

Данными с плавающей точкой являются числа, представленные с десятичным порядком. Например, 5.47Е+2, 5470Е-1. Эти записи представляют одно и то же число 547.

Операции над вещественными числами: сложение, вычитание, умножение, деление и операции отношения. Кроме того, имеется большое количество встроенных функций для работы с числами: abs, sqr, sqrt, sin, cos и т.п.

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

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

Например: тип Single - хранится 7-8 знаков после десятичной точки, тип Double - 15-16, тип Extended - 19-20 знаков.

program sravnenie;

var x: single; y: double; z: extended;

Begin

x:= 1/3; y:= 1/3;

z:= abs(x-y);

writeln ('z=',z);

end.

Эта программа выдаст в результате число z = 9.93410748106882E-0009. Обычно принято считать, что a = b, если выполняется условие abs(a-b) < eps. Число eps можно определять следующим образом: min(abs(a), abs(b))*10^(-m), где m - необходимое число совпадающих десятичных разрядов.

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

Переменные логического типа Boolean занимают в памяти один байт и могут принимать одно из двух значений False - ложное или True - истинное. Этот тип является порядковым (Ord (False) = 0, Ord (True) = 1) и, следовательно, упорядоченным. Результат любых операций сравнения имеет логический тип и может быть присвоен логической переменной. Для операндов типа boolean определены следующие логические операции: NOT - отрицание (превращает false в true, а true в false), AND - логическое умножение "и", OR – логическое сложение "или", XOR - исключающее или (true, если операнды разные).

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

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

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

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

Символьный тип (литерный)

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

Символьный тип Char также называют литерным. Он позволяет работать с символами, которые записываются двумя способами: в одинарных кавычках или по их коду, например 'a', 'B', '*' или, что то же самое, #97, #130, #42. В отличие от текста программы на Паскале, символы, соответствующие строчным и заглавным буквам различаются. Множество значений типа Char представляет собой полный набор ASCII - символов (американская стандартная кодировка). В компьютере хранятся шестнадцатеричные коды символов (1 байт), которые и используются в операциях отношения (сравнения). Функция Ord выдает код соответствующего символа, который может быть от 0 до 255. Обратной функцией, которая по коду выдает соответствующий символ, является функция Chr.

Пользовательские типы данных.

В Турбо Паскале предусмотрен механизм создания новых типов, которые принято называть пользовательскими или конструируемыми. Их можно создавать на основе стандартных и ранее созданных типов. Описание новых типов происходит в разделе TYPE. После этого можно в разделе Var создавать переменные этих типов. Можно сразу описывать новый тип при создании переменной в разделе Var. Рассмотрим следующие пользовательские типы:

 

· перечисляемый тип,

· интервальный тип.

Перечисляемый тип

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

Функция Ord возвращает порядковый номер значения, начиная с нуля. Объявление перечисляемого типа описывает множество идентификаторов, которые являются возможными значениями перечисляемого типа. Идентификаторы в описании типа представляют собой константы. Отдельные значения указываются через запятую, а весь список заключается в круглые скобки. Первая константа имеет порядковый номер нуль, вторая — 1 и т.д.

Формат:

Type

<имя типа> = (значение1, значение2,..., значение n>);

Var

<Идентификатор,...>: <имя типа>;

Пример,

Type

Gaz = (Ge, С, О, N);

Metall = (Na, K, Li, Cu, Zn);

Var

Gl, G2, G3: Gaz;

Metl, Met2: Metall;

Season: (Winter, Spring, Summer, Autumn);

В данном примере приведены два явно описанных типа данных пользователя Gaz и Metall. Определены их значения - обозначения некоторых газов и металлов -периодической таблицы Д.И.Менделеева. Переменные Gl, G2, G3 и Metl, могут принимать только одно из перечисленных значений. Попытка присво­ить любое другое значение вызовет программное прерывание. Третий тип перечисления анонимный (не имеет имени) и задается перечислением значений в разделе v аг. Переменной этого типа является Season и может принимать значения Winter, Spring, Summer и Autumn. Таким образом может быть задан любой тип, но это не приемлемо, так как первый способ более понятен и больше соответствует характеру языка Паскаль. При этом имена внутри круглых скобок являются константами соответствующего типа перечисления и подчиняются обычным правилам констант. Выражения и константы перечисляемого типа допустимы для использования в операторе CASE. Операции отношения и логические операции допустимы для значений перечисления одного и того же типа. Упорядочение осуществляется по номеру элемента в описании типа. Например, будет истинно выражение Winter < Spring, так как Spring имеет больший номер по порядку в описании чем Winter.

В отличие от данных других типов Паскаль не поддерживает операции ввода–вывода значений пользовательского перечисляемого типа. При необходимости про­граммист сам должен организовать ввод-вывод таких данных.

Для работы с данными перечисляемого типа в языке Паскаль предназначены стандартные подпрограммы Succ, Pred, Ord.

Следует отметить, что стандартные типы byte, word, char и boolean также можно считать вариантами перечислимого типа.

Интервальный тип (диапазон)

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

Обе константы должны принадлежать одному из стандартных типов (тип real здесь недопустим). Значение первой константы должно быть обязательно меньше значения второй.

Формат:

Type

<имя типа> - <константа1>…<константа2>;

Var

<идентификатор,...>: <имя типа>;

Пример:

Type

Days =1.. 31;

Var

RabDay, BolnOay: Days;

В этом примере переменные RabDay и BolnDay имеют тип Days и могут принимать любые значения из диапазона 1..31. Выход из диапазона вызывает программное прерывание.

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

Min = 1; Max = 31;

Type

Days = Min.. Max;

Var

RabDay, BolnDay: Days;

 

Совместимость типов данных

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

Необходимо помнить следующее: переменные или выражения одного типа являются полностью совместимыми.

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

Например, результат сложения двух целых переменных типа integer и word может присваиваться целой переменной, тип которой только longint, поскольку только этот целый тип содержит в себе весь возможный диапазон значений как для типа integer, так и для типа word. Также, можно присваивать целое выражение вещественной переменной или символьное выражение строке.

Структурированные типы данных

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

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

1. Для чего используется указание типа данных величины? Как описывается тип величины в языке Паскаль?

2. Приведите полный перечень типов данных в Турбо Паскале с примерами величин каждого типа.

3. Какие типы данных относят к скалярным типам данных?

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

5. Какие типы отношений определены над данными целого типа? Какие стандартные функции определены для целых чисел? Чем отличаются вещественные числа от целых?

6. Какие функции преобразуют вещественный аргумент в целое число? Чем они отличаются?

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

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

9. Пользовательские типы данных. Чем они отличаются от стандартных типов данных? Приведите примеры данных перечисляемого и интервального типов.

10. Что такое структурированные типы данных? Почему от программиста требуется знание и правильное применение понятия тождественности и совместимости типов величин? Каковы признаки тождественности и условия совместимости типов?


Лекция №3

Тема: «Операторы языка»

Оператор – это языковая конструкция, представляющая один шаг из последовательности действий или набор описаний.

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

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

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

Простые операторы

1.1 Оператор присваивания

1.2 Оператор безусловного перехода (go to)

1.3 Оператор вызова процедуры

1.4 Пустой оператор.

Структурные операторы

2.1. Составной оператор

2.2. Условные операторы

2.2.1.Оператор условия if

2.2.2.Оператор выбора case

2.3.Операторы повтора.

2.3.1.Оператор while.

2.3.2.Оператор повтора repeat

2.3.3.Оператор повтора for

2.4.Вложенные операторы цикла

Примечание.

Простые операторы

1.1 Оператор присваивания – основной оператор любого языка программирования. Общая форма записи V:=A, где V –имя переменной; «:=»-знак присваивания; А – выражение.

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

Например, для оператора Rezult:=A div В; сначала выполняется целочисленное деление значения переменной А на значение переменной В, а затем результат присваивается переменной Rezult.

Пример

А:= 8;

S:=A*B;

Ostatok:= A mod B;







Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам...

ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала...

ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры...

ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.