
- •Утверждаю Зам.Директора по учебной работе
- •Основы Алгоритмизации и программирования учебно-методическое пособие
- •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 Список используемой литературы Основная
- •Дополнительная
Var I, j, nd : integer;
у : real;
X : mass;
begin
read(nd);
for i := 1 to nd do
begin
write('Введите ',i,'-й элемент массива ');
readln(x[i])
end;
for i := 2 to nd do
begin
for j := nd downto i do
if x[j - 1] > x[j] then
begin
у := x[j - 1];
x[j - 1] := x[j];
x[j] := у
end;
end;
for i:= 1 to nd do
write(x[i]:8:2)
end.
При каждом значении i наименьший элемент перемещается к i - 1 позиции в массиве.
5.2.2 Работа с двумерными массивами( матицы)
Пример 5.13 Сформировать единичную матрицу е размером n на n.
Единичной называется квадратная матрица, на главной диагонали которой элементы равны единице, а все остальные элементы равны нулю. еij = 1, если i = j, иначе еij = 0.
Алгоритм решения этой задачи включает в себя: ввод размера матрицы n; формирование матрицы; вывод результата расчета на экран дисплея.
program matr1;
uses crt;
const size =10;
Var I,j,n : integer;
e : array [1..size,1..size] of integer;
begin
write('Введите размер матрицы');
readln(n);
for i := 1 to n do
for j := 1 to n do
if i = j then e[i,j] := 1
else e[i,j] := 0;
clrscr;
gotoxy(3,3);
write(' Единичная матрица размером ', n, ' на ',n);
for i := 1 to n do
for j := 1 to n do
begin
gotoxy(3*i,5 + j);
write(e[i,j])
end
end.
Индексы i и j определяют номер строки и столбца, на пересечении которых находится каждый элемент матрицы, и кроме этого определяют положение курсора на экране в процедуре gotoxy(3*i,5+j).
Пример 5.14 Написать программу сложения двух матриц. Две матрицы можно сложить, если они имеют одинаковый размер. В результате получается матрица такого же размера, каждый элемент которой равен сумме соответствующих элементов исходных матриц: сij = аij + bij. Алгоритм решения задачи содержит следующие этапы: ввод исходной матрицы а; ввод исходной матрицы b; расчет элементов матрицы с и вывод результата на экран дисплея.
program clgmatr;
uses crt;
const line = 20; column = 30;
type t = array[1..column] of real;
var
I,j,n,m : integer;
a,b,c : array [1..line] of t;
begin
clrscr;
write('Число строк матрицы (менее 21)'); readln(n);
write('Число столбцов матрицы (менее 31)'); readln(m);
clrscr; {Ввод матрицы а}
for i:=1 to n do
for j:=1 to m do
begin
write('a[',i,',',j,']');
readln(a[i,j])
end;
clrscr; {Ввод матрицы b}
for i:=1 to n do
for j:=1 to m do
begin
write('b[',i,',',j,']');
readln(b[i,j])
end;
clrscr; {Расчет и вывод матрицы с}
for i:=1 to n do
begin
for j:=1 to m do
begin
c[i,j] := a[i,j] + b[i,j];
write(c[i,j]:6:2);
end;
writeln
end;
repeat until keypressed
end.
В программе определен новый тип данных - массивовый, состоящий из 30 элементов вещественного типа.
Для того, чтобы каждая строка матрицы с выводилась на экране с новой строки, в цикл по i включен пустой оператор вывода writeln.
Функция keypressed из модуля crt дает значение true, если в буфере input не осталось несчитанных символов, и false в противном случае. Цикл repeat until keypressed включен в программу для задержки изображения на экране вывода. Цикл repeat ... until будет работать до тех пор, пока не будет нажата какая-либо клавиша.
Пример 5.15 Написать программу умножения двух матриц. Перемножить две матрицы можно лишь в том случае, если число столбцов первой матрицы равно числу строк второй матрицы. Если первый сомножитель, матрица а, имеет размер m на p, второй сомножитель, матрица в, имеет размер р на n, то в результате расчета получится матрица с размером m на n, каждый
р
элемент которой сij: =aik*bkj.
k=1
program umnmatr;{Умножение матриц}
сonst
m = 4; р = 3; n = 5;
var
i: 1..m;
j: 1..n;
i: 1..P;
a: array [1..m,1..p] of real;
b: array [1..p,1..n] of real;
c: array [1..m,1..n] of real; .
begin {Ввод матрицы а}
for i := 1 to m do
for k := 1 to p do
begin
write('a[',i,',',k,']');
readln(a[i,k])
end;
for k := 1 to p do { Ввод матрицы b}
for j := 1 to n do
begin
write('b[',k,',',j,']');
readln(b[k,j])
end;
for i:= 1 to m do { Умножение}
begin
for j := 1 to n do
begin
c[i,j] := 0;
for k := 1 to p do
c[i,j] :=c[i,j] + a[i,k] * b[k,j];
end;
end;
writeln('Результат'); {Вывод матрицы}
for i := 1 to m do
begin
for j := 1 to n do write(c[i,j]:8:2);
writeln
end;
end.