- •Утверждаю Зам.Директора по учебной работе
 - •Основы Алгоритмизации и программирования учебно-методическое пособие
 - •220301 Автоматизированные системы обработки информации и правления
 - •Введение
 - •Основные этапы решения задач на эвм
 - •Глава 1 способы записи алгоритма
 - •1.1 Алгоритм и его свойства
 - •Схемы алгоритма
 - •1.2 Структуры алгоритмов
 - •1.2.1 Алгоритм линейной структуры
 - •1.2.2 Алгоритм разветвляющейся структуры
 - •1.2.3 Алгоритм циклической структуры
 - •1.2.4 Алгоритм со структурой итерационных циклов
 - •1.2.5 Алгоритм со структурой вложенных циклов
 - •Глава 2 программа на языке высокого уровня
 - •2.1 Системы программирования
 - •2.2 Характеристика языка программирования Паскаль
 - •2.3 Алфавит и структура программы на Паскале Алфавит программы
 - •Структура программы
 - •Глава 3 Стандартные типы данных
 - •3.1 Данные. Типы
 - •3.2 Вещественные типы
 - •3.3 Целочисленные типы
 - •3.4 Символьный тип
 - •3.5 Логический тип
 - •4 Представление основных структур программирования: итерация, ветвление, повторение
 - •4.1 Линейная структура (следование)
 - •Var X,y,f: real;
 - •4.2 Разветвляющая структура (ветвление)
 - •4.3 Циклическая структура (повторение)
 - •4.3.1 Оператор цикла с параметром
 - •I : Integrer; {номер числа }
 - •4.3.2 Оператор цикла с постусловием
 - •I,n: integer;
 - •4.3.3 Оператор цикла с предусловием
 - •4.3.4 Итерационные циклы
 - •Var r,a:real;
 - •Приближенное вычисление функций
 - •Решение уравнений приближенными методами
 - •Метод деления отрезка пополам
 - •Xsl, Xpr, a, b, e, y1, y2, Lev, Prav, y: Real;
 - •Метод Ньютона
 - •Метод прохождения отрезка с переменным шагом
 - •Вычисление определенных интегралов
 - •1. Метод прямоугольников
 - •X: Real;
 - •2. Метод трапеций
 - •X: Real;
 - •Глава 5 Типы данных, определяемые пользователем
 - •5.1 Пользовательский тип данных
 - •5.1.1 Типизированные константы
 - •5.1.2 Перечисляемый тип
 - •I:1..6; loto: num;
 - •5.2 Массивы
 - •I : integer;
 - •5.2.1. Работа с одномерными массивами
 - •I,sum : integer;
 - •Var a: array [1..N] of real;
 - •Var I,s,r: integer;
 - •I : list;
 - •I : integer;
 - •X : mass;
 - •I, j, p, n, m, k:integer;
 - •I, j, k, nd : integer;
 - •Xmin : real;
 - •X : mass;
 - •Var I, j, nd : integer;
 - •X : mass;
 - •5.2.2 Работа с двумерными массивами( матицы)
 - •Var I,j,n : integer;
 - •I,j,n,m : integer;
 - •5.2.3 Сортировка массивов
 - •Сортировка методом "пузырька"
 - •X : Array [1..Nmax] Of Real;
 - •X : Array [1..Nmax] Of Real;
 - •Сортировка выбором
 - •Обменная сортировка
 - •Var m:array[1..1000] of integer;
 - •I,z,n:integer; Key:byte;
 - •Сортировка слиянием
 - •Var { Описание массивов и переменных}
 - •X, y: array[1..1000] of integer;
 - •5.3 Строковые типы
 - •Var s: string[10];
 - •5.3.1 Операции над строками
 - •5.3.2 Стандартные процедуры и функции для строк
 - •Функция Length
 - •Функция Upcase
 - •Функция Copy
 - •Функция Роs
 - •I, n, p: integer;
 - •I: integer;
 - •I: integer;
 - •Insert (word2, text, I);
 - •Insert (chr (k-32), t, I);
 - •Insert (chr (k-80), t, I);
 - •Insert (‘е’, t, I);
 - •Глава 6 Процедуры и функции
 - •6.1 Процедуры
 - •I : Integer;
 - •I, n: integer;
 - •Input _ mas (k, n);
 - •I,n : Integer;
 - •I,k : Integer;
 - •6.2 Функции
 - •I:Integer;
 - •2) Массивы;
 - •I,n : Integer;
 - •I : Integer;
 - •I,tn,tk:Real;
 - •Глава 7 Программирование рекурсивных алгоритмов
 - •7.1 Понятие рекурсии
 - •7.2 Техника построения рекурсивных алгоритмов
 - •7.3 Формы рекурсий
 - •If Prim(I) then
 - •7.4 Рекурсия и итерация
 - •7.5 Программирование с использованием рекурсии
 - •Var p: Integer;
 - •Var X, y: Integer; begin
 - •Var z: Real; begin
 - •Var I:integer; j:real;
 - •Глава 8 Файлы
 - •8.1 Текстовые файлы
 - •I,n : Integer; {Вспомогательные переменные}
 - •8.2 Типизированные файлы
 - •X,m,s : Real;
 - •8.3 Нетипизированные файлы
 - •Глава 9 Записи
 - •9.1 Описание записи
 - •I: integer;
 - •9.2 Оператор присоединения
 - •I, j, k, m : integer;
 - •X: real;
 - •9.3 Вложенные записи
 - •9.4 Записи с вариантами
 - •Information: record
 - •I, k, n : integer;
 - •Vedom : Array [1..Nmax] Of Stud;
 - •I,j : Integer;
 - •Vedom : File Of Stud;
 - •Vedom : File Of Stud;
 - •I,j,kdv,k2 : Integer;
 - •If Not Eof (Ftel) Then
 - •If Not Eof(Ftel) then
 - •If Not Eof(FilComp) then
 - •Глава 10 Динамические структуры данных
 - •10.1 Распределение памяти при выполнении программ
 - •Верхняя граница памяти ms-dos
 - •10.2 Ссылочные переменные
 - •10.3 Процедуры управления кучей
 - •10.4 Использование переменных ссылочного типа
 - •I: Integer;
 - •I, k : Integer;
 - •Val(b, k, code);{Превратили второй символ в ч исло}
 - •10.5 Списки
 - •Var Ch : Char;
 - •Var Ch : Char;
 - •10.6 Деревья
 - •10.7 Константы ссылочного типа
 - •Глава 11. Язык Паскаль. Графический модуль Graph Список используемой литературы Основная
 - •Дополнительная
 
I : integer;
k : array [n .. m] of integer;
begin
for i:= n to m do read (k[i]);
for i:= n to m do write (k[i] * pi)
end.
Использование раздела констант позволяет сгруппировать в начале программы величины, характерные для конкретного примера. Здесь их легче изменить. Например, если программу pri нужно выполнить для массива, состоящего из сорока элементов, то достаточно изменить лишь раздел констант. В случае когда константы записаны в программе явно, изменения приходится вносить в различные части программы, при этом некоторые части, требующие изменения, могут остаться не замеченными. Особенно часто это бывает, если программа достаточно велика. Использование констант не только облегчает процесс изменения программы, но и делает его более надежным.
Массивовый тип является типом, определяемым пользователем, его можно определить в разделе описания типов:
type
аr = array [n .. m] of integer.
Тогда в разделе переменных необходимо указать
k: аr.
Синтаксис описания типа массива:
<имя типа> = array [<сп. инд. типов>] of < тип>
Здесь <имя типа> - правильный идентификатор; array, of - зарезервированные слова (массив, из); <сп. инд. типов> - список из одного или нескольких индексных (порядковых) типов, разделенных запятыми; квадратные скобки, обрамляющие список, - требование синтаксиса; < тип> - любой тип Турбо Паскаля.
В качестве индексных типов в Турбо Паскале можно использовать любые порядковые типы, кроме longint.
Так как тип <тип>, идущий за словом of, - любой тип Турбо, Паскаля, то он может быть и другим массивом, например:
type
mat = array [0 .. 5] of array [-2 .. 2] of real,
или более компактно:
type
mat = array [0 .. 5, -2 .. 2] of real.
Еще пример описания:
type
color = (red, green, blue);
truthtable = array [boolean] of boolean;
height = 0..200;
var
square : array [color] of height;
matrix : array [2..8] of array [2..8] of integer;
table : truthtable;
Тип truthtable связан с набором массивов с индексами и элементами типа boolean. Переменная square является массивом с индексами типа color и элементами типа heigth. Переменная matrix является массивом с индексами в диапазоне 2 .. 8 и элементами, являющимися, в свою очередь, массивами с индексами 2 .. 8 и элементами целого типа. Переменная table является массивом типа truthtable, то есть с индексами и элементами типа boolean.
Значения индексных выражений должны находиться в диапазоне, установленном типом индексов в описании массива.
Глубина вложенности структурированных типов вообще, а следовательно, и массивов - произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничено, однако суммарная длина внутреннего представления любого массива не может быть больше 65520 байт.
Рисунок 5.4 - Синтаксическая диаграмма для массивового типа
В целях совместимости со стандартным Паскалем в Турбо Паскале разрешаемся перед описанием структурированного типа ставить зарезервированное» слово packed, предписывающее компилятору, по возможности, экономить память, отводимую под объекты структурированного типа; но компилятор фактически игнорирует это указание: "упаковка" данных в Турбо Паскале осуществляется автоматически везде, где это возможно.
В приведенном выше примере через mat [i][j] обозначается j-я компонента i-й компоненты массива mat. Обычно для многомерных массивов удобнее пользоваться такой сокращенной формой как mat [i,j]. Массив mat можно рассматривать как матрицу и говорить, что mat [i,j] относится к компоненте, находящейся в j-ом столбце i-й строки этой матрицы. Дело не ограничивается двумерными массивами. Если задано n типов индексов, то массив называется n-мерным, а его компоненты обозначаются с помощью n индексных выражений.
Если есть переменные - массивы А и В одного типа, то присваивание:
А := В
возможно, если массивы допускают покомпонентное присваивание
А [ i ] := В [ i ]
(для всех i, относящихся к типу индекса), и представляет собою сокращенную запись такого покомпонентного присваивания.
Однако над массивами не определены операции отношения. Нельзя, например, записать
if a = b then ...
Сравнить два массива можно поэлементно, например:
for i := 1 to 5 do
if a[i] <> b[i] then ...
При работе с массивами часто используется поэлементная обработка массива в рамках цикла for ... to ... do. Так, с помощью фрагмента программы
for i := 2 to 7 do index[i] := 0;
всем элементам массива index присваивается значений 0.
В качестве начального значения типизированной константы-массива используется список констант, отделенных друг от друга запятыми; список заключается в круглые скобки, например:
type
colors = (white, red, black);
const
colst : array [colors] of string[5] = ('white', 'red', 'black');
vector : array [1..5] of byte = (0, 0, 0, 0, 0);
При объявлении многомерных констант-массивов множество констант, соответствующих каждому измерению, заключается в дополнительные круглые скобки и отделяется от соседнего множества запятыми. Зададим двумерный массив из трех строк и пяти столбцов с монотонно увеличивающимися целыми числами:
сonst
matr : array [1..3, 1..5] of byte = ((0, 1, 2, 3, 4),
(5, 6, 7, 8, 9),
(10,11,12,13,14))
