1.3 Примеры разработки алгоритмов
____________________________________________________________________
начало
k=1
i=k+1
нет
akk=0
да
Переставить ур-е так чтобы akk≠0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m aik / akk |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
aik=0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
j=k+1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
aij=aij-makj |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
нет |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
j=n |
|
|
|
|
|
|
|
|
|
|
|
|
|
j=j+1 |
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
да |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
bi=bi-mbk |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
нет |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
i=n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i=i+1 |
|
|
|
|
|
|
|
|
|
|||||
|
|
|
да |
|
нет |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
k=n-1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k=k+1 |
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
да |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
да |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
ann=0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
да |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
нет |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bn=0 |
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
xn=bn/ann |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
нет |
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
i=n-1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
j=i+1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Система не |
|
|
|
Система имеет бесконеч- |
|||||||||||
|
|
|
|
|
|
|
|
S=0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
имеет решения |
|
|
|
ное множество решений |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S=S - aijxj |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
нет |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
j=n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
j=j+1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
да |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
xi=(bi + S)/aii |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
нет |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
i=1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i=i-1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
да |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
конец |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 1.12. Алгоритм Гаусса |
|
|
|
|||||||||||
46
Глава 1 Основы программирования
____________________________________________________________________
i=i+1
j=j+1
l=k
|
да |
aik alk |
l=i |
нет
нет
i=n

да
l=k
да
нет
j=k
t=akj
akj=alj
alj=t
нет
j=n
да
t=bk
bk=bl
bl=t
i=k+1
Рис. 1.13. Алгоритм перестановки уравнений
47
Глава 2 Введение в язык программирования Pascal
2.1. Основные элементы языка
Язык Pascal (Паскаль), изобретенный в начале 70-х годов 20-го века Н. Виртом и названный в честь французского математика и философа Блеза Паскаля, является одним из наиболее распространенных языков программиро-
вания. От других языков он выгодно отличается возможностью более ясно и логично записывать программы.
Программа на языке Паскаль состоит из двух частей: описание действий,
которые должны быть выполнены и описание данных, над которыми они вы-
полняются. В тексте программы описание данных предшествует описанию дей-
ствий. В этом выражается общее правило языка – каждый встречающийся в программе объект должен быть предварительно описан.
Описание данных состоит из описания переменных. Операторами называ-
ются действия над данными. В общем виде любая Паскаль – программа имеет вид:
заголовок программы
раздел описания переменных
раздел операторов
Заголовок программы имеет вид:
program имя программы;
Здесь слово "program" – это так называемое ключевое (или служебное или еще говорят зарезервированное) слово. Оно должно записываться именно
48
Глава 2 Введение в язык программирования Pascal
____________________________________________________________________
так (без кавычек), а не иначе. Допускается использовать как строчные, так и прописные буквы. Записи PROGRAM, Program, ProgRam – разрешены и означают одно и то же.
Так начинаются все программы, написанные на языке Паскаль. Здесь нече-
го понимать, просто так принято разработчиком языка.
В принципе допускается не использовать заголовок program, но лучше все-таки начинать программу именно с заголовка!
Имя программы – это любая последовательность букв, цифр и некоторых знаков. Такие последовательности называются идентификаторами.
Идентификатор состоит из 1-127 символов – букв, цифр или знаков подчѐрки-
вания, при этом первым должна быть буква или знак подчѐркивания. Иденти-
фикатор не должен совпадать ни с одним из ключевых слов. В идентификаторе не должно быть (.) – точки, (,) – запятой, самих скобок ( ), а также пробелов и знаков операций.
Примеры правильных идентификаторов:
Х3
Summa
VOLVO
Select_screen_color
Примеры неправильных идентификаторов:
3х начинается с цифры
Sum.ma внутри идентификатора есть точка
VOL VO есть пробел
2.1.1 Переменные. Стандартные типы.
Каждая переменная имеет имя и тип. Имя переменной – это произвольный идентификатор. В дальнейшем будем говорить "переменная х", вместо "пере-
менная с именем х".
49
2.1 Основные элементы языка
____________________________________________________________________
Тип переменной определяет множество еѐ возможных значений, набор до-
пустимых операций над переменной и размер занимаемой памяти.
В Паскале существуют следующие стандартные типы переменных: integer (целый), real (вещественный), boolean (логический), char
(символьный), string (строковый).
Значениями переменных целого типа являются целые (и только!) числа.
Примеры целых чисел:
25 |
+150 |
-200 10000 |
Операции над целыми числами таковы:
+ (сложение), - (вычитание), * (умножение), div (деление нацело), mod
(остаток от деления двух целых чисел).
Значениями переменных вещественного типа являются вещественные чис-
ла. Определены следующие операции над вещественными числами:
+ (сложение), - (вычитание), * (умножение), / (деление).
Запись вещественных чисел похожа на общепринятую, только вместо за-
пятой используется точка и вместо степени 10 используется буква Е.
Пример:
|
Таблица 2.1 |
Общепринятая |
на Паскале |
|
|
5,30 |
5.30 |
-1,0 |
-1.0 |
41000 |
41000 или 4.1Е4 |
-0,73∙10-2 |
-0.73Е-2 |
|
|
Значениями переменных логического типа является true (истина), false
(ложь). Определены операции: not (не), and (и), or (или), xor (исключающее или).
50