- •Федеральное агенство по образованию российской федерации
- •1. Основные категории и понятия информатики
- •Предмет информатики как науки
- •1.2. Информация: структура, форма, измерение
- •2. Техническое и программное обеспечение пэвм
- •2.1. Структура аппаратных средств пэвм
- •2.2. Программное обеспечение пэвм
- •3. Основы алгоритмизации
- •Этапы разработки программ
- •3.2.Формы представления алгоритмов
- •Действие 1
- •Действие 2
- •Классификация и примеры алгоритмических структур
- •3.2.1. Алгоритм линейной структуры.
- •3.2.2. Алгоритм разветвляющейся структуры.
- •Да нет да да Рис 3.11
- •3.2.3. Алгоритмы циклической структуры.
- •4.2. Структура программы на языке Паскаль
- •4.3. Скалярные стандартные типы данных
- •4.4. Скалярные, пользовательские типы данных
- •5. Структурные типы данных
- •Массивы
- •5.3. Записи
- •5.4. Записи с вариантами
- •Множества
- •5.6.Файлы
- •6. Операции над данными скалярных типов. Выражения
- •7. Операторы языка Паскаль
- •7.1. Простые операторы
- •7.2. Структурные операторы
- •Оператор 2
- •8. Примеры программ на языке Паскаль
- •8.1. Пример 1. Арифметические выражения. Оператор присваивания
- •Пример 2. Условные операторы
- •Ввод чисел х, а
- •8.3. Пример 3. Программа обработки одномерного массива
- •8.4. Пример 4. Программа обработки двумерного массива
- •True False True False False
- •8.5. Пример 5. Программа обработки символьных строк
- •8.6. Пример 6. Программа обработки двумерного массива с вводом элементов матрицы из текстового файла
- •9.Разработка программ сложной структуры
- •9.1. Процедуры и функции
- •9.2. Область действия идентификаторов при использовании процедур и функций. Локальные и глобальные переменные
- •9.3. Передача данных в подпрограмму с помощью параметров. Формальные и фактические параметры
- •9.4. Использование процедур и функций
- •True False Рис. 9.4
- •9.5. Массивы – параметры процедур и функций
- •True False True False Рис. 9.7
- •True False True False True False Рис 9.9
- •9.6. Рекурсивные процедуры и функции
- •True False Рис. 9.10 True False
- •True False Рис. 9.12
- •9.7. Модули
- •10. Динамические структуры данных
- •Основные определения
- •10.2. Объявление и создание динамических структур данных. Указатели
- •Операции над указателями
- •Программа создания и обработки линейного списка
- •Приложение. Контрольные вопросы
- •Литература
4.4. Скалярные, пользовательские типы данных
Перечисляемый тип является скалярным, порядковым типом, но не является стандартным типом и определяется набором идентификаторов, с которыми будут совпадать значения переменной этого типа. Перечисляемый тип определяется в разделе Type следующим образом:
Type <имя типа>=(< идентификатор 1 >, < идентификатор 2>, …, < идентификатор n>);
Например, Type Week= (mon, twe, wen, tru, fri, sut, sun);
Интервальный тип в языке Паскаль определяется следующим образом. В любом порядковом типе можно выделить подмножество значений, определяемое минимальным и максимальным значением. Интервальный тип называется типом-диапазоном и определяется в разделе Type следующим образом:
Type <имя типа> = <мин. значение>..<макс. значение>;
Например,
Type A=1..100;
5. Структурные типы данных
Структурные или составные типы данных определяют наборы однотипных или разнотипных компонент. Типы компонент могут быть как скалярными, так и составными.
В языке Паскаль существуют следующие составные типы данных:
тип-массив;
строковый тип;
тип-запись;
тип-запись-с-вариантами;
тип-множество;
тип-файл.
Массивы
Данными типа «массив» являются массивы. Массив представляет собой фиксированное количество компонент одного и того же типа. Массив определяется именем, количеством размерностей (координат), необходимых для указания месторасположения элемента в массиве, типом элементов и типами индексов.
Массивы могут быть одномерными и многомерными. Для объявления типа-массива в разделе Typeиспользуется ключевое словоarray:
Type
<имя типа-массив>= array[<тип индекса1>,<тип индекса2>, …]of<тип элементов>;
Тип индекса обычно задается интервальным типом или типом-диапазоном порядкового типа:
<номер первого элемента>.. <номер последнего элемента>.
Например, объявление типа:
Type V=array[1..10] of integer;
определяет тип-массив из 10 элементов целого типа integer.
Массивы в программах могут быть константами или переменными.
Переменные типа-массив объявляются в разделе Varс помощью ключевого словаarrayследующим образом:
Var
<имя массива>: array[<тип индекса(ов)]of<тип элементов>;
Например,
Var M1: array[1..10] of real;
Mt: array[1..5,1..5] of real;
Границы изменения индексов можно задать в разделе Const; например,
Const k=10;
m=4;
n=5;
Var A: array[1..k] of integer;
B: array [1..m,1..n] of real;
Массивы- константы объявляются в разделе Constследующим образом:
Const<имя массива>: <описание массива>=(<список значений элементов>);
Например,
Const A: array[1..5] of integer=(1,2,3,4,5);
Const B: array[1..3,1..2] of integer=((1,2),(2,3),(3,4));
Значения элементов массивов-констант не изменяются в программе.
Доступ к элементам массивов осуществляется с помощью индексированных переменных, которые записываются с помощью имени массива и списка индексов в квадратных скобках:
<имя массива >[< индекс 1 >,< индекс 2>, …< индекс n>]
На практике обычно используются одномерные и двумерные массивы.
В случае одномерного массива в списке индексов указывается только один индекс, который может быть константой, переменной или арифметическим выражением целого типа. Элементы массива размещаются в памяти ЭВМ в непрерывном участке памяти один за другим.
-
A[1]
A[2]
A[3]
…
A[n]
Одномерный массив – аналог понятия «вектор» в математике.
Двумерный массив можно представить в виде прямоугольной таблицы из mстрок иnстолбцов.
-
A[1,1]
A[1,2]
…
A[1,n]
A[2,1]
A[2,2]
…
A[2,n]
…
…
…
…
A[m,1]
A[m,2]
…
A[m,n]
Двумерный массив объявляется в разделе VARследующим образом:
<имя массива>: array[<тип индекса1>,< тип индекса2>]of<тип элементов >;
где тип индекса 1 определяет тип индекса для строк; тип индекса 2 определяет тип индекса для столбцов.
Например, объявление VarM:array[1..10,1..8]ofreal; определяет двумерный массив из 10 строк и 8 столбцов.
Двумерные массивы размещаются в памяти ЭВМ по строкам:
-
A[1,1]
A[1,2]
…
A[1,n]
…
A[m,1]
A[m,2]
…
A[m,n]
1-я строка m-я строка
Строки
Данные строкового типа, или строки, представляют собой последовательности символов произвольной длины. Строку можно рассматривать как одномерный массив символов. В языке BorlandPascal7.0 используются две разновидности строкового типа:
тип string;
тип Pchar.
Строка типа stringобъявляется в разделе описаний переменных следующим образом:
Var
<имя переменной строкового типа>: string[<максимальная длина строки>];
Максимальная длина строки может быть не задана, тогда она равна 255 символам. Строка отличается от массива тем, что первый элемент строки имеет индекс 0 и служит для хранения текущей длины строки. Символы в строке нумеруются с единицы. Каждый символ занимает один байт. Таким образом, индекс элементов строки изменяется от нуля до максимальной длины строки.
Объявление строки вида
VarS1:string[10];
эквивалентно объявлению массива символов
Var S1: array [0..10] of char;
Если символьный массив объявлен как строка типа string, то нулевой символ будет заполняться автоматически Паскаль - системой. Если символьный массив объявлен как массив типаchar, то нулевой символ не будет заполняться автоматически.
Символьная строка размещается в памяти ЭВМ следующим образом:
0 1 2 L N
-
L
……
где N– максимальная длина строки,L– текущая длина строки.
Для работы со строками в Паскале используется операция сцепления строк, которая добавляет в конец первой строки вторую строку. Например,
Program Stroki;
Var Str1, Str2, Str: string[80];
Begin
Str1:=’Turbo ’;
Str2:=’Pascal’;
Str:=Str1+Str2;
Writeln(‘Str=’,Str);
end.
В результате работы этой программы на экране будет отображено:
Str=TurboPascal
Следующие процедуры и функции модуля Systemиспользуются для обработки символьных строк типаstring:
Функция Concat(S1,S2,…,Sn) выполняет объединение нескольких строкS1,S2,…,Sn, гдеn>=2, возвращает объединенную строку. Если длина результирующей строки больше 255, она усекается до 255 символов.
Функция Copy(S1,Ind,Count) создает и возвращает подстроку строкиS1, которая начинается с символа с номеромIndи имеет длину, равнуюCount.
Процедура Delete(S1,Ind,Count) удаляет подстроку из строкиS1, которая начинается с символа с номеромIndи имеет длину, равнуюCount.
Функция Length(S1) определяет текущую длину строкиS1.
Процедура Str(X,S) преобразует значение арифметического выраженияXв строкуS.
Процедура Insert(S1,S2,Ind) вставляет строкуS2 в строкуS1 после символа с номеромInd-1 строкиS1.
Процедура Val(S,V,C) преобразует строкуSв целое или вещественное число и присваивает его переменнойV. Если строкаSсодержит символы, отличающиеся от цифр и других допустимых в числовых константах символов, то преобразования не выполняется а в переменнуюCпомещается номер неправильного символа; С=0, если все символы правильные.