Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Модуль 4. Структурированные типы данныхСодержание книги
Поиск на нашем сайте
Традиционно к структурированным типам данных в языке Pascal относят массивы, множества и записи. Иногда структурированным считают строковый тип. На самом деле строки занимают промежуточное положение между простыми и структурированными типами, но т.к. большинство их свойств реализуются как свойства сложных данных, то строки рассматриваются как структурированный тип.
Массивы.
Объявление переменной массива происходит в разделе var. При этом используется зарезервированное слово array, указывается тип массива и его размерность перечислением индексов, а также объявляется тип данных в массиве. Пример 1:
Пример 2: var masiv: array ['a'..'z'] of integer; Для обращения к элементу массива в Pascal-программе указывается имя массива и в квадратных скобках индексы элемента. Пример 1: a [2,4] а) ввести значение: read (A[2,4]); б) изменить значение: A[2,4]:=5; в) сообщить значение: write (A[2,4]); Пример 2: masiv ['b']; masiv['b']:=47*24; Задача ввода элементов массива. а) линейного:
program vvod; var A: array [1..10] of integer; i:integer; begin for i:=1 to 10 do read (A[i]); end.
б) двумерного:
program vvod; const n=5; m=7; var A: array [1..n,1..m] of real; i,j: integer; begin for i:=1 to n do for j:=1 to m do read (A[i,j]); end.
Задача 2: найти минимальный элемент в массиве:
program min; const n=10; var i: byte; a: array [1..n] of real; min: real; begin for i:=1 to n do read (A[i]); min:=A[1]; for i:=1 to n do if min>A[i] then min:=A[i]; write (min); end.
Сортировка массивов.
Сортировкой называется процесс расположения элементов массива в порядке убывания (возрастания) из значений. Пример: Алгоритм выполнения сортировки называется методом сортировки. К наиболее распространенным методам относятся:
1 шаг: 1 | 42795 2 шаг: 12 | 4795 3 шаг: 124 | 795 4 шаг: 1245 | 97 5 шаг: 124579
1 шаг: 24 | 1795 2 шаг: 21 | 4795 124 | 795 3 шаг: 1247 | 95 4 шаг: 12479 | 5 124759 124579
1 шаг: 214795 true 2 шаг: 124579 true 3 шаг: 124579 false
Строковый тип данных.
Переменная типа строка предназначена для обработки цепочек символов. Каждый символ является элементом типа char. Строки могут вводиться с помощью стандартных операторов read/readln и выводиться стандартными операторами write/writeln. Объявляются переменные типа строка в разделе var. При объявлении указываются идентификатор переменной, зарезервированное слово string и, в квадратных скобках, целое число - максимально возможная длина строки. Наибольшая длина строки составляет 256 символов. Если переменная имеет значение с максимальной длиной строки, то при объявлении переменной ограничиваются зарезервированным словом. Пример: var identificator_1: string; identificator_2: string[20]; identificator_3: string[255]; Значение строкового типа также как и значение типа char при записи внутри программы заключаются в апострофы. Пример: identificator_1:=' это - компьютер '; identificator_1[1]:=' э '; Простейшая операция которую Pascal позволяет выполнить со строками - это операция конкатенации, или сцепления, или объединения строк в операторе присваивания. Операция записывается с помощью знака "+". Пример: identificator_1:='это' + '-' + 'компьютер';
Для обработки строковых данных используется ряд встроенных функций: 1) Length (L) - определяет длину строки, являющуюся значением переменной L. Значение, возвращаемое этой функцией является целочисленным и отображает реальную длину строки, т.е. может не совпадать со значением длины строки, объявленным при декларации. Пример 1: var L: string[15]; A: byte; Begin L:=' Урок '; A:=length(L); Write(A); End.
Пример 2: Begin write(length(' Урок ')); End. 2) Upcase (C) - преобразует любой символ в прописной. Переменная C может иметь значение типа char, либо являться одним элементом из строки. Русские символы обрабатываться этой функцией не могут. 3) Copy (L, A, B) - позволяет копировать фрагмент строки являющейся значением переменной L, начиная с позиции A в количестве B, где A и B - целые числа, причем значение A не превышает длины строки L, а значение B не превышает (длина строки L - A). Если эти правила нарушены, то ошибки компиляции не произойдет, но возможно совершение логической ошибки в программе. 4) Pos (L, M) - возвращает результат целочисленного типа, являющийся номером позиции, с которой строка L входит в строку M. Если строки L нет в строке M, то результат - 0. 5) Insert (L, M, A) - вставляет строку L в строку M, начиная с позиции с номером A. Фактически, вставка производится перед указанной позицией. 6) Delete (L, A, B) - удаляет из строки L B символов, начиная с позиции A. Если номера позиций в функциях Insert и Delete не соответствуют длине рассматриваемых строк, то произойдет ошибка компиляции. Пример 1: переставить буквы введенного слова в противоположном порядке. Например, ввели "урок", получили - "кору": Пример 2: изменить введенное значение строковой переменной на слово, записанное теми же символами, но в обратном порядке. Новую переменную не использовать: Пример 3: сравнение слов в Pascal.
Program slovo; Var word1, word2: string[60]; Begin readln(word1); readln(word2); if word1 > word2 then writeln ('>') else begin if word1 = word2 then writeln ('=') else writeln ('<'); End.
Множества.
Множеством называется упорядоченная совокупность данных одного типа, записанных без повторений и отсортированных по возрастанию. Максимальное множество состоит из 256 элементов. Для объявления множеств используется зарезервированное слово set, за которым указывается тип элемента множества или сами элементы. Пример: type A: 5..9; var B: set of A; C: set of char; D: set of '1'..'5'; Внутри программы элементы множества записываются в квадратных скобках. Для перечисления используется интервальный, перечисляемый типы или их комбинации. Пример: e:['A'..'Q', 'T', 'x'..'z'] Элементы множеств нельзя вводить с клавиатуры и выводить стандартными операторами, т.к. элементы множества относятся к перечисляемому типу. Над множествами можно выполнять следующие операции:
Пример: из введенной последовательности символов, признаком конца которой является '0', сформировать множество заглавных и строчных латинских букв. var c: char; a, pl: set of 'A'..'Z'; b, sl: set of 'a'..'z'; i: char; Begin pl:= [0]; sl:= [0]; repeat read(c); if [c] in a then pl:=pl+[c]; if [c] in b then sl:=sl+[c]; until [c]='0'; for i:='A' to 'Z' do if [i] in pl then write(i:3); for i:='a' to 'z' do if [i] in sl then write(i:3); End.
Записи.
Пример: Для реализации объединения данных разного типа в языке Pascal существует специальная структура - запись. Объявление записи начинается с зарезервированного слова record, за которым перечисляются имена и типы всех составляющих записей ее полей. Заканчивается объявление скобкой end. Пример: type karta = record family: string[20]; name: string[15]; age: integer; end; При обращении к записи в программе указывается имя записи и через точку имя поля. Пример: karta.family:='Иванов'; karta.name:='Иван'; karta.age:=20; Для упрощения обращения к записи может быть использован оператор работы со структурой with. Пример: with karta do begin family:=' Иванов '; name:='Иван'; age:=20; end; Полями записи наряду с простыми типами могут быть и данные структурированных типов, например, массивы или записи. Пример 1: var z: record pole1: string; pole2: array [1..10] of byte; end; Begin for i:=1 to 10 do read (z.pole2[i]); End.
Пример 2: объявите запись, содержащую сведения о фамилии, дате рождения и адресе студента. var student: record fam: string[15]; data: record day: 1..31; mes: 1..12; year: integer; end; adres: record street: string[15]; dom: byte; kvart: byte; end; end; Begin with student do begin fam:= ' Иванов '; with data do begin day:= 30; mes:= 4; year:= 1987; end; with adres do begin street:= ' Туполева '; dom:= 22; kvart:= 154; end; end; End. Для использования в программе набора с одинаковыми полями используются массивы записей. Пример: объявить массив из десяти записей. 1 вариант решения: var A: array [1..10] of record fam: string; name: string; end; 2 вариант решения: type student = record fam: string; name: string; end; var A: array [1..10] of student;
|
||||
Последнее изменение этой страницы: 2020-12-09; просмотров: 121; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.97.1 (0.006 с.) |