- •Кафедра математики и информатики
- •Практикум
- •Введение
- •1. Арифметические основы построения эвм
- •2. Интегрированная среда Turbo Pascal 7.1
- •2.1. Основные элементы ide Turbo Pascal 7.1
- •2.2. Ввод программы в среде Turbo Pascal
- •2.3.Сохранение программы в файле
- •2.4. Работа с существующей программой
- •2.5. Компиляция программы в среде Turbo Pascal
- •(Успешная компиляция: Нажмите любую клавишу...)
- •2.6. Выполнение программы в среде Turbo Pascal
- •2.7. Выход из среды Turbo Pascal
- •3. Элементы языка Turbo Pascal
- •3.1. Алфавит
- •3.2. Идентификаторы
- •3.3. Разделители
- •3.4. Основные типы данных и операции с ними
- •3.5. Константы и переменные
- •3.6. Выражения
- •3.7. Стандартные математические функции языка Турбо - Паскаль
- •3.8. Структура программы на языке Pascal
- •X,y,z: Real; {переменные типа Real}
- •I,j,k: Integer; {переменные типа Integer}
- •3.9. Контрольные вопросы
- •4. Лабораторная работа №1: Программирование линейных вычислительных процессов
- •4.1. Оператор присваивания
- •4.2. Ввод исходных данных. Операторы Read и ReadLn
- •4.3. Вывод данных. Операторы Write и WriteLn
- •4.4. Примеры составления программы
- •4.5. Контрольные вопросы
- •Раздел Var;
- •4.6. Варианты заданий
- •5. Лабораторная работа №2: Программирование разветвляющихся процессов
- •5.1. Методические указания
- •5.2. Условный оператор If и составной оператор Begin … End
- •5.3. Логические операции
- •5.4. Оператор безусловного перехода Goto
- •5.5. Примеры составления программы
- •5.6. Контрольные вопросы
- •5.7. Варианты заданий
- •6. Лабораторная работа №3: Циклический процесс
- •6.1. Общие сведения
- •6.2. Цикл с параметром
- •6.3. Цикл с предусловием
- •6.4. Цикл с постусловием
- •6.5. Итерационные циклы
- •6.6. Контрольные вопросы
- •6.7. Варианты заданий
- •6.7.2. Циклы со счетчиками Составить программы используя разные циклы (с предусловием, с постусловием, с параметром)
- •6.7.2. Итерационные циклы
- •7. Лабораторная работа №4: Вложенные циклы
- •7.1. Общие сведения
- •7.2. Примеры выполнения задания
- •7.3. Контрольные вопросы
- •7.4. Варианты заданий
- •8. Лабораторная работа №5: Массивы
- •8.1. Одномерные и многомерные массивы
- •В квадратных скобках - индексы массива
- •8.2.Символьные массивы
- •8.3. Инициализация элементов массива
- •8.4. Примеры выполнения задания
- •8.5. Контрольные вопросы
- •8.6. Варианты заданий
- •9. Лабораторная работа №6: Сортировки
- •Приложение 1
- •Приложение 2 Структурограммы
- •Структурное программирование
- •Приложение 3
- •(Основная и дополнительная)
- •Приложение 4 Сообщения об ошибках компиляции
- •(Ошибка 15 : Файл не найден)
- •113. Error in statement (ошибка в операторе)
- •Приложение 5
- •21 Столетие Библиографический список
- •Содержание
8.1. Одномерные и многомерные массивы
Массивы бывают одномерные (рис. 8.1) и многомерные. Из многомерных наиболее часто приходится иметь дело с двумерными. Двумерные массивы хранятся в памяти ЭВМ по строкам. Двумерный массив можно представить как матрицу элементов (рис. 8.2).
Описание такого массива выглядит так:
Type
Matrix = Array [1..20, 1..10] Of Real;
Var
X,Y: Matrix;
Z: Array [1..10, 1..10] Of Integer;
Массивы X и Y имеют двадцать строк и десять столбцов. Массив Z представляет собой квадратную матрицу размером 1010.
Для доступа к элементам массива необходимо указать идентификатор массива с одним или несколькими индексами в скобках (в зависимости от размерности массива). Конкретный элемент массива обозначается с помощью имени переменной массива, за которой указывается индекс, определяющий данный элемент.
Индексные выражения обозначают компоненты в соответствующей размерности массива. Число выражений не должно превышать числа индексных типов в описании массива. Более того, тип каждого выражения должен быть совместимым по присваиванию с соответствующим индексным типом. В случае многомерного массива можно использовать несколько индексов или несколько выражений в индексе.
В квадратных скобках - индексы массива
Рис. 8.1. Одномерный массив Рис. 8.2. Двумерный массив
Для одномерного массива обращение к элементу будет выглядеть так: Z[J], а для двумерного F[I,J]. В этом случае переменные I и J должна иметь значения, не превышающие диапазона индексов соответствующего массива.
Если тип элемента в типе массив также является массивом, то результат можно рассматривать как массив массивов или как один многомерный массив.
Например, Array [Boolean] Of Array [1..100] Of Array [Size] Of Real интерпретируется компилятором точно так же, как массив: Array [Boolean, 1..10, Size] Of Real.
Массив вида: Array[0..X] Of Char, где X - положительное целое число, называется массивом с нулевой базой. Массивы с нулевой базой используются для хранения строк с завершающим нулем.
Pascal допускает единственно возможное действие над массивом в целом: использование его в операторе присваивания.
Например: Vect1:=Vect2, причем типы и размерность обоих массивов в данном случае должны быть эквивалентны.
8.2.Символьные массивы
Особое место в языке Паскаль занимают массивы символов. В стандартной версии языка массивы символов могут храниться в упакованном и неупакованном виде. В первом случае один символ занимает 1 байт в памяти ЭВМ, а во втором – 1 слово 4 байта. Упакованный массив символов займет меньше места в оперативной памяти, чем неупакованный. Для описания упакованного массива используется служебное слово Packed. Ниже приводится описание упакованного массива символов Su и неупакованного массива Sn:
Var
Su: Packed Array [n..m] Of Char;
Sn: Array [n..m] Of Char;
Упакованный массив символов образует символьную строку. Символьная строка может быть либо строковой константой, либо строковой переменной. Строковые константы описываются в разделе определения констант и представляют собой строку символов, заключенную в апострофы. Строковые переменные описываются в разделе описания переменных. К ним применимы операции отношения (=, <>, <, >, <=, >=), если эти переменные имеют одинаковую длину. Примером описания символьных строк может носить фрагмент из программы.
Const
Prs='*****';
Var
S1: Array [1..5] Of Char;
S2: Array [1..10] Of Char;
Begin
S1:=Prs; S2:=' program ';
If S1='*****' Then S2[10]:='*';
................................................................
Данные строкового типа можно задавать и с помощью оператора String. При объявлении строковой величины в квадратных скобках указываются максимальное число заключенных в интервалов в диапазоне от 1 до 255 (по умолчанию 255), например:
Var
Kor: String [40];
Const
Mol: String='Error 21';
фактическую длину строки можно определить с помощью стандартной функции Length.