- •Часть 1
- •1. With elem 50
- •2.1. Если поступившая запись предшествует корневой, идти в левое 98
- •2.2. Иначе – в правое поддерево. 98
- •Введение Основные этапы решения задач на эвм
- •Языки программирования
- •Трансляторы
- •1. Общие сведения о языке паскаль
- •1.1. Алфавит языка. Идентификаторы и зарезервированные слова
- •2. Данные в паскале. Простые типы данных
- •2.1. Целочисленный тип
- •2.2. Вещественный тип
- •2.3. Логический тип
- •2.4. Символьный тип
- •2.5. Перечисляемый тип
- •Var m1, m2: metall;
- •2.6. Ограниченный (диапазонный) тип данных
- •Над значениями ограниченного типа допустимы те же операции, что и над значениями базового типа, используемыми при задании в разделе определения типов. Если, к примеру, задано определение:
- •Var y:bukva;
- •3. Операции и выражения
- •2.1. Целочисленный тип
- •3.2. Арифметические выражения и операции
- •3.3. Логические операции и выражения
- •3.4. Операции отношения
- •3.5. Стандартные функции
- •3.6. Приоритеты операций
- •4. Структура программы
- •4.1. Раздел определения констант
- •4.2. Раздел определения типов
- •4.3. Раздел описания переменных
- •V: boolen;
- •4.4. Раздел описания процедур и функций
- •4.5. Раздел операторов
- •4.6. Директивы компилятора и управляющие символы
- •5. Операторы языка паскаль
- •5.1. Оператор присваивания
- •5.2. Оператор вывода информации
- •5.3. Оператор ввода информации
- •5.4. Составной оператор
- •5.5. Условный оператор
- •5.6. Оператор варианта case
- •5.7. Операторы цикла
- •5.7.1. Оператор цикла по счетчику (цикл с параметром )
- •Иденти-фикатор перемен-ной
- •I,n:integer; {I -пар-р цикла, n - его кон.Занч.}
- •X,s,p;integer;
- •5.7.2. Оператор цикла с предусловием
- •Пример составления таблицы переменных
- •Var a,Summa:real;
- •Inc (Summa, a);
- •5.7.3. Оператор цикла с постусловием
- •X,Summa:real;
- •6. Структурированные типы данных
- •6.1. Массивы
- •I,ne:integer;
- •6.1.1. Сортировка массивов
- •Vr:char;
- •Vr : char;
- •6.2. Строки
- •6.3. Множества
- •I : byte;
- •6.4. Записи
- •With elem
- •7. Типизированные константы
- •7.1. Типизированные константы скалярных типов
- •7.2. Типизированные константы - массивы и строки
- •7.3. Типизированные константы – множества
- •Var a: hvor;
- •I, j, k, simp: byte;
- •7.4. Типизированные константы – записи
- •8. Файлы
- •8.1. Типизированные файлы
- •8.2. Текстовые файлы
- •Var f : text;
- •9. Подпрограммы
- •9.1. Процедуры и функции
- •9.2. Процедуры и функции пользователя
- •Var p: real;
- •Var p: real;
- •9.3. Параметры подпрограмм
- •Var X: real; m: integer;
- •Var I : integer;
- •10. Рекурсии
- •10.1. Рекурсивные алгоритмы и определения
- •10.2. Рекурсивные процедуры и функции
- •Var f : longint ;
- •Var a, y, z : real;
- •10.3. Виды рекурсивных процедур
- •If условие
- •If условие
- •If условие then Recur ; then begin
- •Var k : integer;
- •Var c : char;
- •Var c : char;
- •11. Графика в паскале
- •11.1. Основы работы в графическом режиме
- •11.1.1. Аппаратная и программная поддержка графики
- •11.1.2. Запуск графической системы
- •Var Driver, Mode: integer;
- •Init Graph (Driver, Mode, Path);
- •11.1.3. Обработка ошибок
- •11.1.4. Закрытие видеорежима
- •11.2. Система координат дисплея
- •11.3. Экран и окно
- •11.4. Установка цвета, заполнения и палитры
- •11.5. Построение простейших геометрических образов
- •11.6. Работа с текстом OutText (X,y:integer; txt:string) – вывести строку txt с текущего положения указателя.
- •11.7. Вывод числовых значений
- •12. Программные модули
- •12.1. Структура программного модуля
- •Interface –интерфейсные раздел («видимая» часть модуля)
- •Implementation – раздел реализации («черный ящик»)
- •Interface
- •Var X:integer;
- •Implementation
- •Interface
- •X: integer;
- •Implementation
- •12.3. Ссылки на модули
- •Unit hlp _ sr;
- •Xa, ya, xb, yb, xc, yc: integer;
- •13. Динамическая память
- •Var a1: array[1..300,1..300] of integer.
- •13.1. Адресация памяти
- •13.2. Указатели
- •13.2.1. Операции с указателями
- •13.2.2. Нетипизированные указатели
- •X: integer;
- •13.2.3. Типизированные указатели
- •13.3. Создание и уничтожение динамических переменных
- •X: real;
- •13.4. Администратор кучи
- •Heapend содержит адрес конца кучи
- •13.5. Примеры использования указателей
- •Объявление
- •Var Pr:preco;
- •14. Использование указателей для организации связанных динамических структур
- •14.1. Списки
- •14.1.1. Алгоритмы работы со списками
- •14.2. Организация стека в динамической памяти
- •Var p, st :pstack; {st - указатель на вершину стека}
- •I: integer;
- •14.3. Очереди
- •14.4. Деревья
- •14.4.1. Организация деревьев в динамической памяти
- •14.4.2. Построение полного двоичного дерева
- •I,j :I nteger; I - значение инф. Поля очередной
- •Var p,h:pstack;
- •Inc(I); {создаем новый узел – вершину}
- •Inc(j); {переместим указатель t и переход
- •14.4.3. Алгоритмы работы с двоичными упорядоченными деревьями (деревьями поиска)
- •14.4.4. Рекурсивные алгоритмы работы с двоичными деревьями
- •I, X : integer;
- •Литература
- •Часть 1. Язык программирования Паскаль
I,ne:integer;
begin
write(’введите элемент 1 ’);
readln (a[1]);
amax := a[1]; ne:=1;
for i:=2 to n
do begin
write (’введите элемент № ’, i);
readln (a[i]);
if a[i]>amax
then begin
amax:=a[i];
ne:=i
end
end;
writeln (’максимальный элемент равен ’, amax);
writeln (’и имеет порядковый номер ’, ne)
end.
3.
{Программа нахождения произведения
двух матриц A
размером M*N
и B
размером N*K
. Элементы результирующей матрицы C
размером M*K
рассчитываются по формуле
.
Значения M,
N,
K
не превышают 10}
program msg3;
const em=10;
type
matr=array[1..em, 1...em] of real;
var
a,b,c:matr;
m, n, k, i, j, t: integer;
begin
write(’введите значения m, n, k ’);
readln (m, n, k);
for i:=1 to m
do for j:=1 to n
do readln(a[i,j]);{ввод элементов матрицы а}
for i:=1 to n
do for j:=1 to k
do readln(b[i,j]);{ввод элементов матрицы b}
for i:=1 to n
do for j:= to k
do begin
c[i,j]:=0;
for t:=1 to n {умножение матриц}
do c[i, j]:=c[i,j]+a[i,t]* b[t,j];
end
end.
В языке Паскаль разрешается присваивать значения одной переменной массива другой (если элементы массива имеют один тип и одинаковую размерность). Например, если массивы A и B имеют одинаковую размерность и тип элементов REAL, то допустимо присваивание: A := B.
6.1.1. Сортировка массивов
Сортировка – pаспpеделение элементов множества по гpyппам в соответствии с опpеделенными пpавилами.
Hапример, соpтиpовка «по невозpастанию» – это сортировка элементов массива, в pезyльтате которой полyчается массив, каждый элемент которого, начиная со второго, не больше стоящего от него слева. Существует достаточно большое число методов сортировки. Приведем лишь простейшие из них.
Линейная сортировка (отбоpом). Пусть необходимо yпоpядочить массив по возpастанию (yбыванию) элементов.
А л г о р и т м:
Пpосматpиваем элементы, начиная с первого. Ищем минимальный (максимальный). Меняем его местами с первым элементом.
Пpосматpиваем элементы, начиная со второго. Ищем минимальный (максимальный). Меняем его местами со вторым элементом.
И т. д. до пpедпоследнего элементата.
П p и м е p. Отсоpтиpовать массив символов по алфавитy.
program linsort;
const maxkol=26;
var
c:array[1..maxkol] of char;
k,i,j:integer;
Vr:char;
begin
write('Введите количество символов <= 26');
readln(k);
writeln('Введите ',k,' символов ');
for i:=1 to k
do readln(c[i]);
for i:=1 to k-1 {Измен. pазмеp неотсоpтиpован.части
do for j:=i+1 to k массива}
do if c[j]<c[i] {Сpавнивать по очеpеди i-й
then begin элемент неотсортированной
vr:=c[i]; части массива со всеми от
c[i]:=c[j]; i+1-го до конца, если в
c[j]:=vr; неотсоpтиpованной части
end; массива нашли элемент, больший
for i:=1 to k i-го, то обменять их местами}
do write(c[i]);
writeln
end.
Соpтиpовка методом «пyзыpька». Данный метод получил такое название по аналогии с пузырьками воздуха в стакане воды. Более «легкие» (максимальные или минимальные) элементы постепенно «всплывают». В отличие от линейной соpтиpовки, сpавниваются только паpы соседних элементов, а не каждый элемент со всеми (поэтомy такая соpтиpовка выполняется за меньшее число шагов, а следовательно, быстpее).
П p и м е p. Отсоpтиpовать по yбыванию массив методом «пузырька».
А л г о р и т м:
1. Последовательно пpосматpиваем пары соседних элементов массива (m).
2. Если для соседних элементов выполняется yсловие m[i-1]<m[i], то значения меняются местами.
program sortpuz;
const maxkol = 26;
var
c : array[1..maxkol] of char;
k, i ,j : integer;
