
- •Любой алгоритм, какой бы он сложный не был, содержит лишь три основных, или, иначе говоря, базовых структуры. Этими базовыми структурами являютия:
- •Любой алгоритм, какой бы он сложный не был, содержит лишь три основных, или, иначе говоря, базовых структуры. Этими базовыми структурами являютия:
- •Клавиши перемещения курсора:
- •Работа с блоками текста
- •Основные клавиши работы с Турбо-Паскалем:
- •Клавиши перемещения курсора:
- •Работа с блоками текста
- •Основные клавиши работы с Турбо-Паскалем:
- •Клавиши перемещения курсора:
- •Работа с блоками текста
- •Основные клавиши работы с Турбо-Паскалем:
- •Строковый тип данных
- •Описание констант
- •Операция присваивания
- •Приоритет операций
- •Оператор присваивания
- •Совместимость и преобразование типов
- •Элементарный ввод-вывод
- •Лекция 5 Выражения
- •Математические операции
- •Логические операции
- •Операции отношения
- •Приоритет операций
- •Основные математические функции
- •Уменьшает значение числа X на y. Если число y не указано, то уменьшение происходит на 1. Циклы
- •Арифметические циклы
- •Итерационные циклы с предусловием
- •Итерационные циклы с постусловием
- •Операторы завершения цикла
- •Операторы ветвления и цикла Условный оператор if
- •Оператор множественного выбора Case
- •Операторы цикла
- •Операторы ветвления и цикла
- •Условный оператор if
- •Оператор множественного выбора Case
- •Операторы цикла
- •Лекция 7. Подпрограммы: процедуры и функции
- •Пример 27
- •Обмен данными
- •4.2. Множества
- •4.2.1. Объявление типа множества
- •4.2.2. Операции над множествами
- •4.2.3. Пример использования множества
- •Пример 33
- •4.3. Строки
- •4.3.1. Объявление типа String
- •4.3.2. Операции над строковыми переменными
- •4.3.3. Встроенные процедуры и функции обработки строк
- •Пример 34
- •4.1. Матрица
- •4.1.1. Ввод-вывод элементов матрицы
- •4.1.2. Определение индексов элементов матрицы
- •Записи Объявление типа записи
- •Вложенные записи
- •Массивы записей
- •Пример обработки массива записей
- •Определение и особенности файлов
- •Доступ к компонентам файла
- •Текстовый файл
- •Чтение из текстового файла
- •Запись в текстовый файл
- •Файлы в Тубо Паскаль
- •Файловые процедуры и функции
- •Текстовые файлы
- •Типизированные файлы
- •Нетипизированные файлы
- •Графика Турбо Паскаля
- •Записи Объявление типа записи
- •Вложенные записи
- •Массивы записей
- •Пример обработки массива записей
- •Статические и динамические памяти переменные
- •Объявление указателей
- •Выделение и освобождение динамической памяти
- •Операции с указателем
- •Пример 41
- •Связанные списки
- •Понятие бинарные деревья. Операции над бинарными деревьями
- •Применение бинарных деревьев
- •Сравнение рекурсии и итерации
- •Пример 51
- •Реализация объектно-ориентированного подхода в турбо-паскале
- •Алгоритмическая и объектная декомпозиция
- •Объектный тип в Турбо-Паскале
- •Способы наследования и переопределения
- •Виртуальные методы
- •Модуль c r t
- •Модуль g r a p h
4.1.2. Определение индексов элементов матрицы
Большое количество задач связано с обработкой части элементов квадратной матрицы (количество строк совпадает с количеством столбцов), например, рассматриваются только элементы главной диагонали, над дополнительной диагональю (соединяющей элементы An,1 и A1,n и т.д. При решении таких задач возникает проблема, определения границ изменения индексов обрабатываемых элементов. Ниже приведем ряд типичных случаев с указанием соответствующих начальных и конечных значений в заголовках циклов.
|
|
элементы, принадлежащие главной диагонали for I:= 1 to N do A[I,I] |
элементы под главной дагональю for I:= 2 to N do for J:= 1 to I-1 do A[I,J] |
|
|
элементы над главной диагональю for I := 1 to N-1 do for J := I+1 to N do A[I,J] |
элементы, принадлежащие диагонали, соединяющей элементы An,1 и A1,n for I := 1 to N do A[I,N+1-I] |
|
|
элементы под диагональю, соединяющей элементы An,1 и A1,n for I := 2 to N do for J:=N-I+2 to N do A[I,J] |
элементы над диагональю, соединяющей элементы An,1 и A1,n for I := 1 to N-1 do for J := 1 to N-1 do A[I,J] |
Приведем фрагмент программы, которая вычисляет произведение элементов квадратной матрицы A[1:K,1:K], принадлежащих главной диагонали и дополнительной диагонали, соединяющей элементы A[K,1] и A[1,K]:
. . . P := 1; for I := 1 to K do P := P * A[I,I] * A[I,K+1-I]; |
Рассмотрим пример вычисления матрицы Y путем замены строк на столбцы в матрице X[1:N,1:N] (задача транспонирования матрицы X):
. . . for I := 1 to N do for J := 1 to M do Y[J,I]:= X[I,J]; writeln('Вывод транспонированной матрицы'); for I := 1 to M do begin for J :=1 to N do write(Y[I,J]:5 ); writeln; end; |
Следующий фрагмент программы осуществляет перемножение двух матриц A[1:N,1:M] и B[1:M,1:L]. Результат размещается в новой матрицы с размерностью N на L. Умножение в соответствии с формулой:
. . . for I := 1 to N do {цикл по строкам в матрице C} for K := 1 to L do {цикл по столбцам в матрице C} begin S := 0; for J := 1 to M do S := S + A[I,J] * B[J,K]; C[I,K] := S end; |
Записи Объявление типа записи
При решении некоторых задач бывает удобно объединять значения различных типов под одним именем. Такая структура данных называется в Паскале записью. Запись состоит из фиксированного числа полей. В отличие от массива эти поля могут быть разного типа. Примером записи является карточка с информацией о книге, хранящейся в библиотеке, например:
код |
автор |
название |
издательство |
год |
Запись имеет свое имя, например, Karta. Для обращения к отдельным компонентам записи ее полям также присваиваются имена. Структура объявления типа записи:
< имя типа > = record < список полей > end
Тип записи Karta можно объявить следующим образом:
type Karta = record Kod,God: integer; Avtor, Nazvanie, Izdat: string; end; var Kart1, Kart2: Karta; {Kart1, Kart2 - переменные типа Karta} |
Тип записи может быть использован непосредственно при объявлении переменных, например:
var Uravn : record A,B,C: real end;
Переменная Uravn является записью и состоит из трех полей A, B, C вещественного типа. Обращение к полю записи осуществляется по составному имени, которое содержит имя переменной типа Record, точку и имя поля, например:
Kart1.Kod := 681; Kart1.Avtor := 'Фаронов'; Kart1.Nazvanie := 'Программирование'; Kart1.Izdat := 'МВТУ'; Kart1.God := 1991;
Необходимо отметить, что переменные типа записи можно использовать только в операторах присваивания, например:
Kart2 := Kart1;