Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 184; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.57 (0.007 с.) |