
- •Кафедра информационных технологий
- •Практикум
- •Введение
- •Тема 1. Основы алгоритмизации
- •1.1. Общие понятия и определения
- •1.2. Свойства информации
- •1.3. Этапы решения задач
- •1.4. Блок-схемы алгоритмов
- •Тема 2. Интегрированная среда Turbo Pascal 7.0
- •2.1. Основные элементы ide Turbo Pascal 7.0
- •2.2. Ввод программы в среде Turbo Pascal
- •2.3.Сохранение программы в файле
- •2.4. Работа с существующей программой
- •2.5. Компиляция программы в среде Turbo Pascal
- •Compile successful: Press any key... (Успешная компиляция: Нажмите любую клавишу...)
- •2.6. Выполнение программы в среде Turbo Pascal
- •2.7. Выход из среды Turbo Pascal
- •Тема 3. Элементы языка Турбо Паскаль и программирование линейных вычислительных процессов
- •3. 1. Алфавит языка
- •3. 2. Идентификаторы
- •3.3. Основные типы данных и операции с ними
- •3.4. Константы и переменные
- •3.5. Выражения
- •3.6. Стандартные математические функции языка Турбо - Паскаль
- •3.7. Структура программы
- •X,y : Integer;
- •3.8. Ввод исходных данных. Операторы read и readln
- •3.9. Вывод данных. Операторы write и writeln
- •Writeln (выражение 1, выражение 2, … , выражение n).
- •3. 10. Оператор присваивания
- •3.11. Пример составления программы
- •3.12. Контрольные вопросы
- •3.13. Варианты заданий
- •Тема 4. Программирование разветвляющихся процессов
- •4.1. Методические указания
- •4.2. Условный оператор if и составной оператор Begin … End
- •4.3. Оператор безусловного перехода goto и оператор отбора case
- •4.4. Контрольные вопросы
- •4.5. Варианты заданий
- •Тема 5. Циклические процессы
- •5.1. Общие сведения
- •5.2. Цикл с предусловием
- •I:integer;
- •5.3. Оператор цикла с постусловием
- •I:integer;
- •5.4. Цикл с параметром
- •I:integer;
- •5.5. Итерационные циклы
- •XI, s, X, e: real;
- •5.6. Контрольные вопросы
- •5.7. Варианты заданий
- •Тема 6. Ввод с клавиатуры и формы представления выходной информации
- •6.1. Операторы ввода и вывода
- •6.2. Управление шириной поля вывода в процедурах Write и Writeln
- •6.3. Пример выполнения задания
- •Xn, xk, hx : real;
- •Результаты выполнения программы
- •6.4. Контрольные вопросы
- •6.5. Варианты заданий
- •Тема 7. Вложенные циклы
- •7.1. Общие сведения
- •7.2. Примеры выполнения задания
- •X, hx, a, b, hx, s, x0, xn, y: Real;
- •7.3. Контрольные вопросы
- •7.4. Варианты заданий
- •Тема 8. Массивы и действия с ними.
- •8.1. Методические указания
- •8.2.Одномерные массивы
- •8.3.Многомерные массивы
- •V:stroka;
- •8.4.Символьные массивы
- •8.5.Ввод-вывод массивов
- •8.6. Примеры выполнения программ
- •I,k,l:integer;
- •I,j,m,r:integer;
- •8.7. Контрольные вопросы
- •I,j: integer;
- •8.8. Варианты заданий
- •Приложение 1
- •Приложение 2 Структурограммы
- •Рязанский государственный медицинский университет
- •Кафедра информационных технологий отчет
- •Рязань 2004
- •Составить программу для вычисления значения функции
- •Библиографический список
- •Содержание
8.3.Многомерные массивы
Если количество типов индексов в описании массива равно N, то массив называется N-мерным. В Turbo Pascal не накладывается ограничений на число измерений массива, но на практике такое ограничение имеется и зависит от компилятора. Многомерные массивы представляют собой чистую абстракцию, поскольку память у ЭВМ одномерна. Компилятор, обрабатывая программу, ставит в соответствие абстрактному многомерному массиву конкретный одномерный массив.
Рассмотрим матрицу А, состоящую из 6 элементов:
.
Элементы матрицы могут быть размещены в памяти ЭВМ по строкам, формируемая при этом последовательность будет 2, 6, 4, 3, 8, 9 . Такой способ размещения элементов характерен для языка Паскаль. Другим способом расположения элементов является организация массива по столбцам, что привело бы к последовательности 2, 3, 6, 8, 4, 9. В языке Паскаль многомерный массив можно описать как одномерный, элементами которого в свою очередь являются массивы. Так для рассматриваемой матрицы имеем.
TYPE
STROKA=ARRAY [1..3] OF INTEGER;
MATR=ARRAY [1..2] OF STROKA;
VAR
V:stroka;
A:MATR;
Приведенное описание можно видоизменить, включив описание типа STROKA в определение типа MATR.
TYPE
MATR=ARRAY [1..2] OF ARRAY [1..3] OF INTEGER;
VAR
A :MATR;
Более краткое описание рассматриваемого массива можно получить в виде:
TYPE
MATR=ARRAY [1..2,1..3] OF INTEGER;
VAR
MAS:MATR;
Описание массива можно поместить непосредственно в разделе описания переменных:
VAR
MATR:ARRAY [1..2,1..3] OF INTEGER;
Конкретный элемент массива задается в виде A V[2] или A[2,1], где значение индексов определяют место элемента в организованной последовательности – массиве V или А.
8.4.Символьные массивы
Особое место в языке Паскаль занимают массивы символов. В стандартной версии языка массивы символов могут храниться в упакованном и неупакованном виде. В первом случае один символ занимает 1 байт в памяти ЭВМ, а во втором – 1 слово 4 байта. Упакованный массив символов займет меньше места в оперативной памяти, чем неупакованный. Для описания упакованного массива используется служебное слово PACKED. Ниже приводится описание упакованного массива символов SU и неупакованного массива SN:
VAR
SU:PACKED ARRAY [N..M] OF CHAR;
SN:ARRAY [N..M] OF CHAR;
В Turbo Pascal массивы символов хранятся только в упакованном виде, поэтому применять в описании служебное слово PACKED не требуется.
Упакованный массив символов образует символьную строку. Символьная строка может быть либо строковой константой, либо строковой переменной. Строковые константы описываются в разделе определения констант и представляют собой строку символов, заключенную в апострофы. Строковые переменные описываются в разделе описания переменных. К ним применимы операции отношения (=, <>, <, >, <=, >=), если эти переменные имеют одинаковую длину. Примером описания символьных строк может носить фрагмент из программы.
CONST
PRS=’*****’;
VAR
S1:ARRAY [1..5] OF CHAR;
S2:ARRAY [1..10] OF CHAR;
BEGIN
S1:=PR5; S2:=’PROGRAM ’;
IF S1=’*****’ THEN S2[10]:=’*’;
……………………………………..
Данные строкового типа можно задавать и с помощью оператора String. При объявлении строковой величины в квадратных скобках указываются максимальное число заключенных в интервалов в диапазоне от 1 до 255 (по умолчанию 255), например:
Var
Kor:String [40];
Const
Mol:String=' Error 21 ';
фактическую длину строки можно определить с помощью стандартной функции Length.