Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Концепция типа данных в Pascal.Содержание книги
Поиск на нашем сайте
В любом алгоритмическом языке каждая постоянная, переменная, выражение, функция бывает определенного типа. Тип явно задается в описании символов или предшествует их использованию Концепция типа данных в Pascal.
В Pascal существуют скалярные и структурированные типы данных. Скалярные типы включают:
Структурированные типы:
Еще есть процедурный и объектный. Есть понятия эквивалентности и совместимости типов. Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется одно из двух условий: Т1 и Т2 представляет собой один и тот же тип, Т1 и Т2 описаны с помощью равенства. Менее строгие ограничения определяются совместимостью типов. Типы являются совместимыми, если:
Данные целого типа в языке Pascal. Целые типы определяют константы, переменные и функции, значения которых реализуют значения целых чисел.
Арифметические операции дающие целый результат: +, -, *, деление div, остаток от деления mod 5 div 2=2; 5 mod 2=1 К аргументам целого типа применяют следующие функции, результат которых имеет целый тип:
Для быстрой работы с целыми типами:
Данные вещественного типа в языке Pascal. Группа вещественных типов определяет те данные, которые реализуются
Comp – число без дробной части и без точки. Операции: +, -, *, / Булевские операторы: >, < Дают вещественный результат: Abs(x), sqr(x), sin(x), cos(x), arctan(x), ln(x), exp(x), sqrt(x), frac(x) – дробная часть; int – целая часть; Pi=π; trunс – выделяет целую часть путем отсечения дробной части; raund – округляет до ближайшего целого Примечание: типы Single, Double, Extended работают при подключении сопроцессора, в том числе при эмуляции сопроцессора. Данные логического типа в языке Pascal.(Boolean) Переменные логического типа могут принимать значения: False (ложно) или True (верно). Примеры описания: VAR b1, b2, b3, b4: boolean; Примеры присвоения значения: b1:= True; b2:= False; b3:= not b1; {или} b3:= False; b4:= b1; Логические операции:
Булевскому типу данных соответствует идентификатор Boolean. Переменные булевского типа имеют размер 1 байт и могут содержать значения TRUE или FALSE. Значению FALSE соответствует 0, любое число отличное от нуля считается TRUE. Var knopka, flag: boolean; Begin knopka:=true; Данные символьного типа в языке Pascal. Символьному типу соответствует стандартный идентификатор Char. Символьный тип (char) определяет упорядоченную совокупность символов, допустимых в данных DBM. Переменные символьного типа могут принимать значения одного из символов с кодами от #0 до #255, т. е. допускаются буквы русского алфавита и символы псевдографики. Символы с кодами от #0 до #31 (управляющие) в тексте воспринимаются как пробел, а в операторах вывода как символ или команда. Значение символа переменной const – это один символ из набора символов. Const может быть записана ‘a’, или кодом #k; k – код символа. Функции:
Из маленького ‘c’ получить ’C’: Chr(ord(‘c’)-32) → ‘C’ Символьный тип, а также целые и булевские типы относят к, так называемым, порядковым типам.
Строки в языке Pascal. Строки символов представляют собой последовательности символов и аналогичны массивам с типом CHAR. Их отличием является то, что число символов или длина строки, может меняться в интервале от нуля до заданного верхнего значения. Объявление строки символов осуществляется с помощью зарезервированного слова STRING: String[максимальная длина строки]; длина строки – целочисленная константа в интервале 1-255. Var St1: string[30]; s:string;- в данном случае длина строки будет равна максимальной 255 символов. Примеры объявлений: Type Фамилия = string[15]; Имя = string[10]; Var F: Фамилия; I: Имя; Для хранения каждого символа строки обычно требуется 1 байт. Число в нулевом байте определяет в данный момент времени длину строки. Как и к массиву, к отдельным символам строки можно обратится с помощью индексов в квадратных скобках: F[3]; Нулевой индекс определяет позицию в которой содержится длина строки. Работа со строками. 1. Присваивание: St:=’Pascal’; s:= ‘Дима’; 2. Оператор сцепления (склеивания) +: результатом является строка, длина которой равна сумме длин строк операндов. 3. Операторы отношения (>, <, =, <>, >=, <=,), имеющие более низкий приоритет, чем оператор сцепления, позволяют реализовать сравнение строк. Результат имеет логический тип. Сравнение строк производится посимвольно слева направо. 4. Определение длины строки: n: = length (st); где st – типа string, n – целого типа. Пример: for i:=1 to length(st) do If st[1]=’a’ then K:=k+1; 5. Копия – выделение подстроки длиной n из строки st, начиная с позиции pos: st1:= copy (st, pos, n); Пример: st:=’Pascal’; St1:=copy(st,3,2); Write(st1); результат: sc 6. Определение позиции символа: n: = Pos (st1,st) – определяет позицию начала вхождения строки st1 в строку st. Пример: st:=’Pascal’; n: = Pos(’a’, st,); результат: n=2. 7. Удаление подстроки: Delete (st,pos,n), где pos указывает, начиная с какой позиции удаляется n символов. Пример: st:=’Формат’; delete (st,6,1); результат: Форма. 8. Вставка подстроки: Insert (st1,st,pos), где st1 – строка, которая вставляется, st – строка, в которую вставляется подстрока st1, pos – позиция с которой вставляется подстрока. 9. Преобразование числа в сроку: Str (IBR,st)- преобразование числового значения IBR и помещение результата в строку st. 10. Перевод строки в число: Val(St,IBR,Cod) – преобразует значение St в величину целочисленного или вещественного типа и помещает результат в IBR. Cod – целочисленная переменная содержит 0, если преобразование прошло без ошибки, или номер позиции первого символа, на котором произошла ошибка. Как уже отмечалось, переменная строкового типа (String) может рассматриваться как массив элементов символьного типа (Char). Например, если в программе определены переменные S: string; C: char; и задано S:='Москва', то S[1]='М', S[2]='о' и т. д. и возможно присвоение, например: C:= S[1]; Таким образом строка может рассматриваться как линейный массив символов. Элементы массива, составляющие строку можно переставлять местами и получать новые слова, применять функции работы с символами, например: for i:= 1 to N div 2 do begin C:= S[i]; S[i]:= S[N-i+1]; S[N-i+1]:= C end; Writeln(S); {исходное слово выведется справа налево: "авксоМ"} Здесь N:= ord(S[0]); - число символов в переменной "S" хранится в переменной S[0]. Функция "ord" преобразует символьный тип в целый. N div 2 - количество перестановок для слова из "N" символов. В переменной "C" запоминается значение i-го элемента, который меняется с элементом, симметричным относительно середины строки. Можно производить поиск и замену заданного символа в строке, например: for i:=1 to N do if S[i]=' ' then writeln('найден символ пробел'); for i:=1 to N do if S[i]='/' then S[i]:='\'; {замена символа "/" на "\"}
Заменяя или переставляя символы в строке по определенной схеме (закону) можно зашифровать строку. Для дешифровки используется, как правило, схема обратной перестановки или замены символов. Например: for i:=1 to N do S[i]:= chr(ord(S[i])+2); {преобразование исходных символов в символы с кодом большим на две единицы} Напомним, что все используемые в MS-DOS символы имеют ASCII коды от 0 до 255. Здесь удобно также использовать функции Pred(C); и Succ(C).
Записи в языке Pascal. Запись – это структура данных, в которой под одним именем объединены переменные одного или различных типов. Компоненты записи называются полями, каждое из которых определяется именем. Поле записи содержит имя поля, вслед за которым через двоеточие указывается тип этого поля. Поля записи могут относиться к любому типу, допустимому в языке Паскаль, за исключением файлового типа. Описание записи в языке Паскаль осуществляется с помощью служебного слова RECORD, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом END: Type {Объявление типа запись} Student = record Fio: string[20]; {Поле Ф.И.О.} Group: integer; {Поле номера группы} Ocn: array[1…3]of integer; {Поле массива оценок} end; Var Stud: Student; {Объявление переменной типа запись}
Описание записей возможно и без использования имени типа, например: var Stud: Record FIO: String[20]; {Поле Ф.И.О.} Group: integer; {Поле номера группы} Ocn: array[1…3]of integer; {Поле массива оценок} End; F: file; Ch: char; St: string; ……. Обращение к записи в целом допускается только в операторах присваивания, где слева и справа от знака присваивания используются имена записей одинакового типа. Во всех остальных случаях оперируют отдельными полями записей. Чтобы обратиться к отдельной компоненте записи, необходимо задать имя записи и через точку указать имя нужного поля, например: Stud.Fio:= ‘Петров В.П.’; {Внесение данных в поля записи} Stud.Group:=202; …… Такое имя называется составным. Компонентой записи может быть также запись, в таком случае составное имя будет содержать не два, а большее количество имен. Обращение к компонентам записей можно упростить, если воспользоваться оператором присоединения with. Он позволяет заменить составные имена, характеризующие каждое поле, просто на имена полей, а имя записи определить в операторе присоединения: With Stud do Begin Fio:=’Петров.В.П.’; Group:=202; End; Инициализация записей осуществляется с помощью типизированных констант: type RecType= Record x,y: Word; ch: Char; dim: Array[1..3] of Byte end; const Rec: RecType= (x: 127; y: 255;ch: ‘A’;dim: (2, 4, 8)); ........
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-15; просмотров: 1425; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.122.125 (0.01 с.) |