SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Инструментальное ПО
1. Алгоритмизация
2. Языки программирования
3. Системы программирования
© Ломакин С.В. каф.ИОМАС ВГАУ 2
АлгоритмизацияАлгоритмизация
Понятие алгоритма
 Слово алгоритм происходит от
латинской транскрипции имени
родившегося в Хиве узбекского
математика IX в. Аль-Хорезми
(Algorithmi). Из его трактатов Европа
познакомилась с десятичной
позиционной системой счисления, где, в
частности, были сформулированы четкие
правила выполнения четырех
арифметических действий.
© Ломакин С.В. каф.ИОМАС ВГАУ 3
АлгоритмизацияАлгоритмизация
Понятие алгоритма
 Алгоритм - есть точное формальное
предписание, однозначно определяющее
содержание и последовательность
операций, переводящих заданную
совокупность исходных данных в искомый
результат".
© Ломакин С.В. каф.ИОМАС ВГАУ 4
АлгоритмизацияАлгоритмизация
Понятие алгоритма
ТОРТ(название)
сахар
масло
...
...
растереть
добавить
ЧТО ?
ИЗ
ЧЕГО ?
КАК?
алг имя алгоритма
( тип имя1, имя2, тип имя3)
арг имя1, имя2, ...
рез имя3, ...
нач
оператор 1;
оператор 2;...
кон
РЕЦЕП
Т
© Ломакин С.В. каф.ИОМАС ВГАУ 5
АлгоритмизацияАлгоритмизация
Составные части алгоритма
1. Правило начала;
2. Совокупность исходных данных;
3. Правило непосредственной обработки;
4. Совокупность промежуточных
результатов;
5. Правило извлечения результата;
6. Правило окончания.
© Ломакин С.В. каф.ИОМАС ВГАУ 6
АлгоритмизацияАлгоритмизация
Свойства алгоритма
 Массовость
 Дискретность
 Определенность
 Результативность
 Конечность
 Формальность
© Ломакин С.В. каф.ИОМАС ВГАУ 7
АлгоритмизацияАлгоритмизация
Способы записи алгоритмов
 Словесный
 Словесно-формульный
 Графический
 На алгоритмическом языке
начало
x1, x2, y1,
y2
D
конец
2
12
2
12 )()( yyxxD −+−=
begin
integer i, n;
real s;
real array x[1:n];
s:=0;
for i:=1 step 1 to n do
s:=s+x[i];
s:=s/n
end
© Ломакин С.В. каф.ИОМАС ВГАУ 8
АлгоритмизацияАлгоритмизация
Элементы блок-схем
Преобразование данных в форму,
пригодную для обработки (ввод в
память ЭВМ) или регистрации
результатов обработки (вывод)
Ввод-вывод
Проверка условий. Указывает
выбор направления выполнения
алгоритма в зависимости от
некоторых условий
Решение
Вычислительное действие или
последовательность
вычислительных действий
Процесс
ПоясненияСимвол, названиеОбозначение
Начало, конец, прерывание
процесса обработки данных
Пуск - останов
© Ломакин С.В. каф.ИОМАС ВГАУ 9
АлгоритмизацияАлгоритмизация
Элементы блок-схем
Указание связи между прерванными
линиями потока информации
Соединитель
Изображение последовательности
связей между символами
Линия потока
Вывод, печать результатов на бумагеДокумент
Выполнение действий,
меняющих команды или
группы команд
Модификация
© Ломакин С.В. каф.ИОМАС ВГАУ 10
АлгоритмизацияАлгоритмизация
Базовые алгоритмические конструкции
 Линейным называют вычислительный процесс, в котором этапы вычислений выполняются в
линейной последовательности и каждый этап выполняется только один раз
 Разветвляющийся вычислительный процесс реализуется по одному из нескольких заранее
предусмотренных направлений в зависимости от выполнения некоторого условия (рис. 35, а).
 Циклический вычислительный процесс включает участки, на которых вычисления выполняются
многократно по одним и тем же математическим формулам, но при разных значениях исходных
данных.
© Ломакин С.В. каф.ИОМАС ВГАУ 11
АлгоритмизацияАлгоритмизация
Линейный вычислительный процесс
2
12
2
12 )()( yyxxD −+−= начало
x1, x2, y1, y2
D
конец
2
12
2
12 )()( yyxxD −+−=
© Ломакин С.В. каф.ИОМАС ВГАУ 12
АлгоритмизацияАлгоритмизация
Разветвляющийся вычислительный процесс





>−
=
<−
=
axåñëèax
axåñëè
axåñëèxa
y
),cos(
,1
, начало
x, a
x < a
?
x = a
y = a - x
y = 1 y = cos (x-a)
y
конец
да нет
да нет
© Ломакин С.В. каф.ИОМАС ВГАУ 13
АлгоритмизацияАлгоритмизация
Циклический вычислительный процесс
 Для организации цикла необходимо
предусмотреть:
 1.задание начального значения
параметра цикла - переменной,
которая будет изменяться при
повторении цикла;
 2.изменение значения этой
переменной перед каждым новым
повторением цикла;
 3.проверку условия окончания
повторений по значению параметра
и переход к началу цикла, если
повторения не закончены.

Пример. Составить таблицу
значений функции у = вх2-а для -1 <
x < 1 c шагом ∆х = 0.2 .
начало
a, b, xn, xk,
∆x
x = xn
y = bx2
-a
x = x+∆x
x, y
x < xk
конец
нет
да
1
2
4
3
6
5
АлгоритмизацияАлгоритмизация
Принципы структурной алгоритмизации
 Структурная алгоритмизация основывается на двух
принципах:
 1) последовательная детализация "сверху - вниз";
 2) ограниченность базового набора структур
 Достоинства структурного программирования:
 1) возможность преодоления барьера сложности программ
(сложная задача разбивается на достаточно простые, легко
воспринимаемые части);
 2) возможность демонстрации правильности программ на
различных этапах решения задачи;
 3) наглядность программ;
 4) простота модификации (внесение изменений) программ;
© Ломакин С.В. каф.ИОМАС ВГАУ 14
© Ломакин С.В. каф.ИОМАС ВГАУ 15
Инструментальное программное
обеспечение (Software Tools)
 Инструментальные программные средства (software
tools) - совокупность программ, которые используются в
процессе разработки программ.
Инструментальное
ПО
Языки
программирования
Трансляторы Системы
программирования
© Ломакин С.В. каф.ИОМАС ВГАУ 16
Языки программирования
 Язык программирования - это система обозначений, служащая
для точного описания программ или алгоритмов для ЭВМ. Языки
программирования являются искусственными языками, в которых
синтаксис и семантика строго определены. Поэтому они не
допускают свободного толкования выражений, характерного для
естественного языка.
 Основные требования, предъявляемые к языкам
программирования:
 наглядность - использование в языке по возможности уже
существующих символов, хорошо известных и понятных как
программистам, так и пользователям ЭВМ;
 единство - использование одних и тех же символов для обозначения
одних и тех же или родственных понятий в разных частях алгоритма.
 гибкость - возможность относительно удобного, несложного описания
распространенных приемов математических вычислений
 модульность - возможность описания сложных алгоритмов в виде
совокупности простых модулей
 однозначность – недвусмысленность используемых инструкций.
© Ломакин С.В. каф.ИОМАС ВГАУ 17
Языки программирования
 Простейшей конструкцией языка программирования является
оператор.
 Различают языки программирования низкого и высокого уровня.
К языкам низкого уровня относят машинный язык, который
представляет собой последовательность команд, записанных в
двоичных кодах. Каждое слово машинного языка управляет тем
или иным действием ЭВМ - арифметическими, логическими,
вспомогательными операциями и т.д. Языки этого вида позволяют
наиболее полно использовать аппаратные возможности ЭВМ. Они
были первыми языками общения человека с ЭВМ.
 Недостатки:
 трудоемкость программирования и отладки из-за отсутствия средств
автоматизации этих процессов
 отсутствие наглядности
 Необходимо подробно представлять себе все детали структуры и
работы ЭВМ.
 Языки программирования высокого уровня позволяют кратко
(лаконично) и вместе с тем емко определять задания для
вычислительной машины в терминах, соответствующих некоторой
области применения и близких к разговорному языку.
© Ломакин С.В. каф.ИОМАС ВГАУ 18
3.3.22. Языки и системы программирования. Языки и системы программирования
ПредысторияПредыстория
Первая попытка создать высоко-
уровневый язык программирования
принадлежит гениальному Конраду
Цузе (конец 1940-х годов),
разработавшему Plancalcul
(планировщик вычислений).
«Plancalcul родился исключительно
как результат теоретической
работы, без всякой связи с тем,
появится или нет в обозримом
будущем машины, подходящие к
программам на Plancalcul».
Фрагмент рукописи Цузе с
шахматной программой на языке
Plancalcul
© Ломакин С.В. каф.ИОМАС ВГАУ 19
3.3.22. Языки и системы программирования. Языки и системы программирования
Наиболее активный период
разработки языков и систем
программирования
приходится на 1960-е годы.
За это десятилетие в мире
родилось более тысячи
разнообразных языков, как
универсальных, так и
специализированных, но
выжили и доросли до XXI
века дожили немногие, в том
числе бессмертные Fotran,
Basic, Algol, Cobol, Simula,
Lisp и их потомки.
На рисунке: «вавилонская
башня» языков программи-
рования, созданных в 1960-е
годы
© Ломакин С.В. каф.ИОМАС ВГАУ 20
3.3.22. Языки и системы программирования. Языки и системы программирования
Родословная основных высокоуровневых языков программирования
Cobol
Fortran Fortran-77
Basic Visual Basic
Algol-68
Altair-Basic
Fortran-IV
Cobol-85
IMS dBASE FoxPro
Visual FoxPro
Visual Basic
Fortran
Cobol
SQL
SQL
Pascal
Algol-60
PL/1
Turbo
Pascal
Object Pascal
Ada
Ada
Simula Simula-67
Smalltalk
Smalltalk
B C C++
Java
Java
Visual C++
Lisp
Prolog
Lisp
Prolog
Delphi
Delphi
Visual C++
Modula
Visual
FoxPro
Simula
Modula
1960 1970 1980 1990 2000
Logo
Logo
© Ломакин С.В. каф.ИОМАС ВГАУ 21
3.3.22. Языки и системы программирования. Языки и системы программирования
БессмертныйБессмертный FortranFortran
Fortran = FORmula TRANslator
Первый высокоуровневый язык
программирования Fortran был
разработан в фирме IBM под
руководством Джона Бэкуса (Backus,
John; р. 1924).
Работа над языком началась в 1954 г.,
первая реализация для IBM 704 в
выполнена в 1957 г.
1960 1970 1980 1990 2000
Fortran Fortran-77
Basic
Fortran-IV
Algol-60
Fortran
© Ломакин С.В. каф.ИОМАС ВГАУ 22
Фрагмент программы на языке Fortran
C MAIN PROGRAM
101 FORMAT(208)
102 FORMAT(//’N=’,15, 5X, ’R=’, 15
1//6X, ’M’, 5X, PROB)
103 FORMAT(18, F14.10)
201 READ(1,101) N, IR
WRITE(3,102) N, IR
IF(N) 202, 202, 203
202 STOP
203 IF(IR) 202, 202, 204
204 M=O
P=COMBF(N,M)*COMBF(IR-1,N-M-1)
1/COMBF(N+IR-1,IR) ...
3.3.22. Языки и системы программирования. Языки и системы программирования
БессмертныйБессмертный FortranFortran
© Ломакин С.В. каф.ИОМАС ВГАУ 23
3.3.22. Языки и системы программирования. Языки и системы программирования
Basic –Basic – язык для начинающихязык для начинающих
BASIC = Beginners All-purpuse Symbolic Instruction Code
Язык Basic был разработан в 1964 г. в Дармутском колледже в
г. Хановере (Darmouth College, Hanover), штат Нью-Хемпшир
Fortran
Basic
Visual
BasicAltair-Basic
Fortran-IV
1960 1970 1980 1990 2000
© Ломакин С.В. каф.ИОМАС ВГАУ 24
3.3.22. Языки и системы программирования. Языки и системы программирования
Basic –Basic – язык для начинающихязык для начинающих
Авторы языка Basic.
Стоит Джон Кемени
(Kemeny, John G.; 1926-1993),
сидит Томас Курц
(Kurtz, Thomas E.; р. 1928)
10 dim A(5)
20 for i=1 to 5
30 input A(i)
40 next i
50 if i=5 then goto 140
60 if A(i)<=A(i+1) then goto 90
70 i=i+1
80 goto 130
90 z=A(i)
100 A(i)=A(i+1)
110 A(i+1)=z
120 i=1
130 goto 50
140 for i=1 to 5
150 print A(i)
160 next i
Простейшая
программа на
языке Basic
© Ломакин С.В. каф.ИОМАС ВГАУ 25
Будущие создатели Microsoft Пол Аллен (Allen, Paul; р. 1954) и Билл
Гейтс (Gates, William; р. 1955) познакомились с Бэйсиком, работая в
компьютерном классе школы в Сиэтле (снимок 1968 г.)
3.3.22. Языки и системы программирования. Языки и системы программирования
Basic –Basic – язык для начинающихязык для начинающих
© Ломакин С.В. каф.ИОМАС ВГАУ 26
Начав с Бэйсика, компания Microsoft
превратилась в крупнейшую
софтверную империю, а Билл Гейтс –
стал самым богатым человеком на
планете
3.3.22. Языки и системы программирования. Языки и системы программирования
Basic –Basic – язык для начинающихязык для начинающих
Штаб - квартира
корпорации Microsoft в
Редмонде (пригород
Сиэтла)
© Ломакин С.В. каф.ИОМАС ВГАУ 27
На протяжении нескольких десятилетий Visual Basic
оставался фирменный языком компании Microsoft. В начале
1990-х годов он стал объектным и приобрел средства
визуального проектирования
3.3.22. Языки и системы программирования. Языки и системы программирования
Basic –Basic – язык для начинающихязык для начинающих
© Ломакин С.В. каф.ИОМАС ВГАУ 28
3.3.22. Языки и системы программирования. Языки и системы программирования
PascalPascal и его потомкии его потомки
Член комитета по Алголу-68 Никлаус Вирт
(Wirth, Niklaus; р. 1934) был против принятия
переусложненного стандарта.
В знак доказательства своей правоты он
разработал в 1971 г. простой и ясный
алголоподобный язык, предназначенный
прежде всего для обучения студентов в
Федеральном техническом университете в
Швейцарии. В честь изобретателя первой
вычислительной машины Вирт назвал язык
Паскалем.
Pascal
Algol-60
Turbo
Pascal
Object Pascal
Ada
Ada
Delphi
Delphi
Modula
Algol-68 Modula
Smalltalk
1960 1970 1980 1990 2000
© Ломакин С.В. каф.ИОМАС ВГАУ 29
Программа на Паскале,
вычисляющая среднее
арифметическое n чисел
var
i, n: integer;
s: float;
x: array[1..n] of real;
begin
s:=0;
for i:=1 to n do
s:=s+x[i];
s:=s/n
end.
3.3.22. Языки и системы программирования. Языки и системы программирования
PascalPascal и его потомкии его потомки
© Ломакин С.В. каф.ИОМАС ВГАУ 30
Среда разработки Delphi фирмы
Borland объединила передовые
достижения технологии
программирования: объектное
расширение языка Pascal, визуально-
событийное проектирование,
модульное структурирование и
раздельная компиляция.
3.3.22. Языки и системы программирования. Языки и системы программирования
PascalPascal и его потомкии его потомки
© Ломакин С.В. каф.ИОМАС ВГАУ 31
3.3.22. Языки и системы программирования. Языки и системы программирования
СуперязыкСуперязык PLPL/1/1Cobol
Algol-60
PL/1
1960 1970
EXAMPLE: PROCEDURE OPTIONS (MAIN);
ON ENDFILE (SYSIN) GO TO ENDING;
P1: GET LIST (A, B, C);
D = B*B — 4*A*C;
E = —B/(A+A);
IF D<0 THEN DO;
X1, X2 = E;
Y1 = SQRT(—D)/(A+A);
END;
ELSE DO;
R = SQRT(D)/(A+A);
…
Y1 = 0;
END;
Y2 = —Y1;
PUT LIST (X1, Y1, X2, Y2);
GO TO P1;
ENDING:;
END EXAMPLE;
PL/1 = Programming
Language One
Язык PL/1 представлял
собой механическую смесь
идей из многих языков.
Критики сравнивали его с
елкой со множеством
украшений.
© Ломакин С.В. каф.ИОМАС ВГАУ 32
3.3.22. Языки и системы программирования. Языки и системы программирования
С – язык для профессионаловС – язык для профессионалов
Язык Си (С) был создан Деннисом
Ричи (Ritchie, Dennis M.; р. 1941) в
1973 году в Bell Labs в ходе
разработки операционной системы
UNIX. Он развивал язык Би (B),
который основывался на созданном
в Кембриджском университете языке
BCPL (от Basic Combined
Programming Language), который в
свою очередь был потомком
Алгола-60
1960 1970 1980 1990 2000
Algol-60 Smalltalk
B C C++
Java Java
Visual C++
Visual C++
PL/1
© Ломакин С.В. каф.ИОМАС ВГАУ 33
Текст на языке С отличается лаконичностью
float A[5];
for(int i=0;i<5;i++)scanf("%f",&A[i]);
i=0;
while(i<4){
if(A[i]<=A[i+1])i++;
else{
z=A[i];
A[i]=A[i+1];
A[i+1]:=z;
i=0;
}
};
for(i=0;i<5;i++)printf("%fn",A[i]);
3.3.22. Языки и системы программирования. Языки и системы программирования
С – язык для профессионаловС – язык для профессионалов
© Ломакин С.В. каф.ИОМАС ВГАУ 34
3.3.22. Языки и системы программирования. Языки и системы программирования
Java –Java – дитя интернетадитя интернета
В 1995 г. фирма Sun Microsystems
представила язык Java для
программирования в интернете.
Он возник в ходе реализации
проекта Oak («Дуб»), целью которого
было создание системы
программирования бытовых
микропроцессорных устройств.
Джеймс Гослинг (Gosling, James) –
автор Java.
© Ломакин С.В. каф.ИОМАС ВГАУ 35
Java - технология
3.3.22. Языки и системы программирования. Языки и системы программирования
Java –Java – дитя интернетадитя интернета
Internet
Виртуальная
Java-машина
JVM
Байт-код
Компилятор
Исходный
текст на
Java
Web-браузер
СерверКлиент class test
{
int i, n;
float s;
float x[n];
public static void
main( String args[] )
{
n = 10;
s = 0;
for( i=1; i<=n; i++)
{
s = s + x[i-1];
s = s / n;
}
}
Язык Java основан на С++
© Ломакин С.В. каф.ИОМАС ВГАУ 36
Lisp = LISt Processing
Язык Lisp создан в 1960 году
Джоном Маккарти (McCarthy,
John; р. 1927 ) в
Массачусетском технологи-
ческом институте на
теоретическом фундаменте
лямбда-исчисления, пред-
ложенного еще в 1930 году
известным американским
логиком Алонзо Черчем.
3.3.22. Языки и системы программирования. Языки и системы программирования
ДолгожительДолгожитель Lisp –Lisp – инструмент функциональногоинструмент функционального
программированияпрограммирования
Lisp
Prolog
Lisp
1960 1970 1980 1990 2000
Дж. Маккарти и А.П. Ершов
Снимок 1975 г.
© Ломакин С.В. каф.ИОМАС ВГАУ 37
3.3.22. Языки и системы программирования. Языки и системы программирования
Prolog –Prolog – несостоявшаяся мечта ЭВМнесостоявшаяся мечта ЭВМ VV поколенияпоколения
Prolog = PROgramming for LOGic
Теоретические основы языка были разработаны
Робертом Ковальским (Kowalski, Robert) в
Эдинбургском университете (Шотландия) в
конце 1960-х годов
Первая практическая реализация языка
осуществлена Аленом Кольмари
(Colmerauer, Alain ) в Марсельском
университете (Франция) в 1972 г.
1960 1970 1980 1990 2000
Prolog
Prolog
Lisp
© Ломакин С.В. каф.ИОМАС ВГАУ 38
Факты:
муж (петя), муж (ваня),
муж (коля), жен (таня), жен (маша),
мать (ваня, таня), отец (ваня, петя),
отец (маша, ваня), отец (коля, ваня).
Правила вывода:
родитель (X, Y) :— отец (X, Y)
родитель (X, Y) :— мать (X, Y)
дед (X, Y) :— родитель (X, Z), отец (Z, Y)
брат (X, Y) :— муж (Y), родитель (X, Z),
родитель (Y, Z), X<>Y
Примеры диалога:
GOAL> дед (коля, X) Кто дед Коли?
X = Петя
GOAL> брат (маша, X) Кто брат Маши?
X = Коля
Ж М
М
Ж М
Таня Петя
Ваня
Маша Коля
Описание
предметной области
семейных
отношений на языке
Prolog
3.3.22. Языки и системы программирования. Языки и системы программирования
Prolog –Prolog – несостоявшаяся мечта ЭВМнесостоявшаяся мечта ЭВМ VV поколенияпоколения
© Ломакин С.В. каф.ИОМАС ВГАУ 39
Концептуальные отличия ЭВМ V поколения:
• новая технология производства микросхем, знаменующая
переход от кремния к арсениду галлия, и дающая
возможность на порядок повысить быстродействие
основных логических элементов;
• новая архитектура (не фон-неймановская);
• новые способы ввода-вывода информации —
распознавание и синтез речи и образов;
• отказ от традиционных алгоритмических языков
программирования (Фортран, Алгол и т. п.) в пользу
декларативных;
• ориентация на задачи искусственного интеллекта с
автоматическим поиском решения на основе логического
вывода.
3.3.22. Языки и системы программирования. Языки и системы программирования
Prolog –Prolog – несостоявшаяся мечта ЭВМнесостоявшаяся мечта ЭВМ VV поколенияпоколения
© Ломакин С.В. каф.ИОМАС ВГАУ 40
Язык запросов
высокого уровня
Язык ядра
Естественный язык.
Общение голосом и
графикой
Система
управления
базами знаний
Система
решения задач
и получения
логического
вывода
Система
интеллектуального
интерфейса
Машина базы
знаний
Машина решения
задач и
получения
выводов
Машина
интеллектуального
интерфейса
Аппаратные
средства
Программные
средства
Внешний
интерфейс
К сетям ЭВМ
V поколенияСтруктура ЭВМ V поколения
3.3.22. Языки и системы программирования. Языки и системы программирования
Prolog –Prolog – несостоявшаяся мечта ЭВМнесостоявшаяся мечта ЭВМ VV поколенияпоколения
© Ломакин С.В. каф.ИОМАС ВГАУ 41
3.3.22. Языки и системы программирования. Языки и системы программирования
Уроки историиУроки истории
 Ada - ориентированный на применение в системах реального
времени и предназначенный для автоматизации задач
управления процессами и/или устройствами, например, в
бортовых (корабельных, авиационных и др.)
 DBASE, FoxPro , SQL (Structured Query Language) – для
разработки и обслуживания баз данных
 PostScript - является одним из основных стандартов для печати и
передачи документов
 VRML (Virtual Reality Modelling Language) — язык
моделирования виртуальной реальности
 Occam - предназначен для организации параллельного
программирования и создания транспьютеров
© Ломакин С.В. каф.ИОМАС ВГАУ 42
3.3.22. Языки и системы программирования. Языки и системы программирования
Уроки историиУроки истории
Основные парадигмы программирования:
• процедурное программирование (Fortran,
Basic,
Cobol, Algol, Pascal, Ada, С, Logo, FoxPro);
• объектно-ориентированное
программирование
(Simula, Smalltalk, Object Pascal, C++, Java,
C#);
• визуально-событийное программирование
(Visual
Basic, Delphi, Visual C++, Visual Java, Visual
FoxPro);
• функциональное программирование (Lisp);
• логическое программирование (Prolog).
© Ломакин С.В. каф.ИОМАС ВГАУ 43
Языки программирования
Классификация и специализация
 Классификация и специализация языков
программирования:
 - для программирования научно-технических задач -
Фортран
 - для обучения программированию - Паскаль и Бейсик;
 - для решения перспективных задач искусственного
интеллекта - Пролог и Лисп;
 - для решения как научно-технических, так и
экономических задач - многоцелевые универсальные языки
ПЛ-1, Алгол-68, Ада.
 Для решения задач на конкретных ЭВМ или группах ЭВМ со
сходными характеристиками используются машинно-
ориентированные языки. Наиболее распространенным
языком этого типа является Ассемблер.
© Ломакин С.В. каф.ИОМАС ВГАУ 44
Языки программирования
Типы данных
ВЕЛИЧИНЫ
ЦЕЛЫЕ
ВЕЩЕСТВЕННЫЕ
НАТУРАЛЬНЫЕ
ЛИТЕРНЫЕ
КОН-
СТАН-
ТЫ
ПЕРЕ-
МЕН-
НЫЕ
Т
И
П
ЗНАЧЕНИЕ
сразу
ИМЯ И ЗНАЧЕНИЕ
как
получаетсятолько место
с индексами простые
пассажир1
пассажир2
Иванов
Петр
Петров
Иван
шофер Иванов
Иван
автобус
пассажиры
МАССИВвещ таб P[1:15]
цел таб M[1:N, 1:K]
вещ A
цел I
нат N
лит X
© Ломакин С.В. каф.ИОМАС ВГАУ 45
Трансляторы, трансляция программ
 Перевод программы с алгоритмического языка на
машинный осуществляется ЭВМ с помощью специальной
программы, которая называется транслятор. В программе -
трансляторе "заложены" все правила алгоритмического
языка и способы преобразования различных его
конструкций на машинный язык.
 Существуют два типа трансляторов: компиляторы и
интерпретаторы.
 Интерпретатор анализирует исходный текст программы и
последовательно транслирует ее на машинный язык по
частям (отдельным командам и операторам ) и
непосредственно следует выполнение их ЭВМ.
 Компилятор производит перевод всей программы в
машинные коды с сохранением их в виде объектного
модуля. Эти объектные модули могут быть использованы
программами написанными на других языках
программирования.
Этапы разработки прикладных программ
Существуют различные способы разделения этого
процесса на этапы, однако обязательными
считаются следующие:
определение требований к задаче (постановка
задачи и построение модели);
проектирование (построение алгоритма
решения);
программирование;
компоновка;
тестирование;
документирование
© Ломакин С.В. каф.ИОМАС ВГАУ 46
© Ломакин С.В. каф.ИОМАС ВГАУ 47
ИДЕИ, ОСПАРИВАТЬ КОТОРЫЕ
БЕСПОЛЕЗНО
 1. В любой программе существуют ошибки. Критерий корректности
программ - не наличие или отсутствие ошибок, а степень их
критичности.
 2. Программа никогда не бывает закончена. После написания
"окончательного" варианта будут еще изменения (ошибки), которые
захочется внести (исправить). Однако желательно где-нибудь
остановиться.
 3. Чем меньше программа, тем она лучше. Если вы работаете над
программой, и ее объем постоянно увеличивается, значит надо ее
стереть и вернуться к какой-нибудь предыдущей версии. Улучшать
программу можно только до тех пор, пока ее объем уменьшается.
 4. Процесс программирования - процесс выбора между
эффективностью и универсальностью. Или программа пишется долгое
время, но получается универсальной, или она пишется быстро, но
получается неуклюжей и громозкой. Задача программиста - выбрать
подходящий компромис между эффективностью и универсальностью.
© Ломакин С.В. каф.ИОМАС ВГАУ 48

Weitere ähnliche Inhalte

Was ist angesagt?

Sistema nervoso - anatomia humana
Sistema nervoso - anatomia humanaSistema nervoso - anatomia humana
Sistema nervoso - anatomia humanaMarília Gomes
 
Fisiologia E Anatomia Do Sistema Cardiovascular
Fisiologia E Anatomia Do Sistema CardiovascularFisiologia E Anatomia Do Sistema Cardiovascular
Fisiologia E Anatomia Do Sistema Cardiovascularrobertodsango
 
Omurga anatomi̇si̇
Omurga anatomi̇si̇Omurga anatomi̇si̇
Omurga anatomi̇si̇fethiisnac
 
0 Sistema Linfatico Tc 0809
0 Sistema Linfatico Tc 08090 Sistema Linfatico Tc 0809
0 Sistema Linfatico Tc 0809Teresa Monteiro
 
Sistema cardiovascular e linfático - anatomia animal
Sistema cardiovascular e linfático - anatomia animalSistema cardiovascular e linfático - anatomia animal
Sistema cardiovascular e linfático - anatomia animalMarília Gomes
 
Sistema cardiovascular e linfático veterinária
Sistema cardiovascular e linfático veterináriaSistema cardiovascular e linfático veterinária
Sistema cardiovascular e linfático veterináriaMarília Gomes
 
Sistema sensorial - anatomia animal
Sistema sensorial - anatomia animalSistema sensorial - anatomia animal
Sistema sensorial - anatomia animalMarília Gomes
 
Tecido cartilaginoso e ósseo
Tecido cartilaginoso e ósseoTecido cartilaginoso e ósseo
Tecido cartilaginoso e ósseoBrendel Luis
 
Medresumos 2016 neuroanatomia 09 - estrutura e funções do cerebelo
Medresumos 2016   neuroanatomia 09 - estrutura e funções do cerebeloMedresumos 2016   neuroanatomia 09 - estrutura e funções do cerebelo
Medresumos 2016 neuroanatomia 09 - estrutura e funções do cerebeloJucie Vasconcelos
 
Ortopedi̇k reh.kavramlar
Ortopedi̇k reh.kavramlarOrtopedi̇k reh.kavramlar
Ortopedi̇k reh.kavramlarconsultant
 
Fisiologia respiratória em aves 2
Fisiologia respiratória em aves 2Fisiologia respiratória em aves 2
Fisiologia respiratória em aves 2Bhanny2
 
Anatomia macroscópica dos hemisférios cerebrais
Anatomia macroscópica dos hemisférios cerebraisAnatomia macroscópica dos hemisférios cerebrais
Anatomia macroscópica dos hemisférios cerebraisOlavo Valente
 
Sistema nervoso periférico
Sistema nervoso periféricoSistema nervoso periférico
Sistema nervoso periféricoEwerton Marinho
 

Was ist angesagt? (20)

Sistema nervoso - anatomia humana
Sistema nervoso - anatomia humanaSistema nervoso - anatomia humana
Sistema nervoso - anatomia humana
 
Doenças do Trato Urinário das Aves
Doenças do Trato Urinário das AvesDoenças do Trato Urinário das Aves
Doenças do Trato Urinário das Aves
 
Fisiologia E Anatomia Do Sistema Cardiovascular
Fisiologia E Anatomia Do Sistema CardiovascularFisiologia E Anatomia Do Sistema Cardiovascular
Fisiologia E Anatomia Do Sistema Cardiovascular
 
Omurga anatomi̇si̇
Omurga anatomi̇si̇Omurga anatomi̇si̇
Omurga anatomi̇si̇
 
0 Sistema Linfatico Tc 0809
0 Sistema Linfatico Tc 08090 Sistema Linfatico Tc 0809
0 Sistema Linfatico Tc 0809
 
Sistema cardiovascular e linfático - anatomia animal
Sistema cardiovascular e linfático - anatomia animalSistema cardiovascular e linfático - anatomia animal
Sistema cardiovascular e linfático - anatomia animal
 
Aves
AvesAves
Aves
 
Sistema cardiovascular e linfático veterinária
Sistema cardiovascular e linfático veterináriaSistema cardiovascular e linfático veterinária
Sistema cardiovascular e linfático veterinária
 
Sistema sensorial - anatomia animal
Sistema sensorial - anatomia animalSistema sensorial - anatomia animal
Sistema sensorial - anatomia animal
 
Tecido Muscular
Tecido MuscularTecido Muscular
Tecido Muscular
 
Sinapses
SinapsesSinapses
Sinapses
 
Tecido cartilaginoso e ósseo
Tecido cartilaginoso e ósseoTecido cartilaginoso e ósseo
Tecido cartilaginoso e ósseo
 
Medresumos 2016 neuroanatomia 09 - estrutura e funções do cerebelo
Medresumos 2016   neuroanatomia 09 - estrutura e funções do cerebeloMedresumos 2016   neuroanatomia 09 - estrutura e funções do cerebelo
Medresumos 2016 neuroanatomia 09 - estrutura e funções do cerebelo
 
Ortopedi̇k reh.kavramlar
Ortopedi̇k reh.kavramlarOrtopedi̇k reh.kavramlar
Ortopedi̇k reh.kavramlar
 
Fisiologia respiratória em aves 2
Fisiologia respiratória em aves 2Fisiologia respiratória em aves 2
Fisiologia respiratória em aves 2
 
Anatomia macroscópica dos hemisférios cerebrais
Anatomia macroscópica dos hemisférios cerebraisAnatomia macroscópica dos hemisférios cerebrais
Anatomia macroscópica dos hemisférios cerebrais
 
Sistema Sensorial
Sistema SensorialSistema Sensorial
Sistema Sensorial
 
Vias sensoriais
Vias sensoriaisVias sensoriais
Vias sensoriais
 
ANATOMIA CANINA
ANATOMIA CANINAANATOMIA CANINA
ANATOMIA CANINA
 
Sistema nervoso periférico
Sistema nervoso periféricoSistema nervoso periférico
Sistema nervoso periférico
 

Andere mochten auch

Foo Mei Yih_Cocurriculum certificates
Foo Mei Yih_Cocurriculum certificatesFoo Mei Yih_Cocurriculum certificates
Foo Mei Yih_Cocurriculum certificatesFOO MEI YIH
 
Strategic Clarity: Entrepreneur Prep before raising Institutional Capital
Strategic Clarity: Entrepreneur Prep before raising Institutional CapitalStrategic Clarity: Entrepreneur Prep before raising Institutional Capital
Strategic Clarity: Entrepreneur Prep before raising Institutional CapitalCharles Bedard
 
Bad Advisor Syndrome Article
Bad Advisor Syndrome ArticleBad Advisor Syndrome Article
Bad Advisor Syndrome ArticleCharles Bedard
 
What are sarms
What are sarmsWhat are sarms
What are sarmssarmstore
 
Ost 1 10907 73
Ost 1 10907 73Ost 1 10907 73
Ost 1 10907 73Grant Cole
 
Distracted Driving: Understanding Your Corporate Risk and What to Do About It
Distracted Driving: Understanding Your Corporate Risk and What to Do About ItDistracted Driving: Understanding Your Corporate Risk and What to Do About It
Distracted Driving: Understanding Your Corporate Risk and What to Do About ItZoomSafer
 
Solving the Value Equation eBook
Solving the Value Equation eBookSolving the Value Equation eBook
Solving the Value Equation eBookCharles Bedard
 
Fiestas del carmen
Fiestas del carmenFiestas del carmen
Fiestas del carmenmariale78
 
11 Major Lawsuits Involving Employee Distracted Driving
11 Major Lawsuits Involving Employee Distracted Driving11 Major Lawsuits Involving Employee Distracted Driving
11 Major Lawsuits Involving Employee Distracted DrivingZoomSafer
 
программируем с черепашкой
программируем с черепашкойпрограммируем с черепашкой
программируем с черепашкойzarechneva
 
14 история развития и поколения эвм
14 история развития и поколения эвм14 история развития и поколения эвм
14 история развития и поколения эвмSergey Lomakin
 

Andere mochten auch (15)

Foo Mei Yih_Cocurriculum certificates
Foo Mei Yih_Cocurriculum certificatesFoo Mei Yih_Cocurriculum certificates
Foo Mei Yih_Cocurriculum certificates
 
Strategic Clarity: Entrepreneur Prep before raising Institutional Capital
Strategic Clarity: Entrepreneur Prep before raising Institutional CapitalStrategic Clarity: Entrepreneur Prep before raising Institutional Capital
Strategic Clarity: Entrepreneur Prep before raising Institutional Capital
 
1 subsidies
1 subsidies1 subsidies
1 subsidies
 
Bad Advisor Syndrome Article
Bad Advisor Syndrome ArticleBad Advisor Syndrome Article
Bad Advisor Syndrome Article
 
What are sarms
What are sarmsWhat are sarms
What are sarms
 
QA/QC Inspector or Engineer
QA/QC Inspector or EngineerQA/QC Inspector or Engineer
QA/QC Inspector or Engineer
 
Ost 1 10907 73
Ost 1 10907 73Ost 1 10907 73
Ost 1 10907 73
 
Distracted Driving: Understanding Your Corporate Risk and What to Do About It
Distracted Driving: Understanding Your Corporate Risk and What to Do About ItDistracted Driving: Understanding Your Corporate Risk and What to Do About It
Distracted Driving: Understanding Your Corporate Risk and What to Do About It
 
Solving the Value Equation eBook
Solving the Value Equation eBookSolving the Value Equation eBook
Solving the Value Equation eBook
 
Fiestas del carmen
Fiestas del carmenFiestas del carmen
Fiestas del carmen
 
11 Major Lawsuits Involving Employee Distracted Driving
11 Major Lawsuits Involving Employee Distracted Driving11 Major Lawsuits Involving Employee Distracted Driving
11 Major Lawsuits Involving Employee Distracted Driving
 
программируем с черепашкой
программируем с черепашкойпрограммируем с черепашкой
программируем с черепашкой
 
14 история развития и поколения эвм
14 история развития и поколения эвм14 история развития и поколения эвм
14 история развития и поколения эвм
 
Digital storyboard
Digital storyboardDigital storyboard
Digital storyboard
 
2016 STS - Chris Nelson: The ABC’s of the Looming ELD Mandate
2016 STS - Chris Nelson: The ABC’s of the Looming ELD Mandate2016 STS - Chris Nelson: The ABC’s of the Looming ELD Mandate
2016 STS - Chris Nelson: The ABC’s of the Looming ELD Mandate
 

Ähnlich wie 13 алгоритмизация, программирование, инструментальное по

лекция1
лекция1лекция1
лекция1shagore
 
Функции в языке программирования QBasic
Функции в языке программирования QBasicФункции в языке программирования QBasic
Функции в языке программирования QBasickvlar
 
Программирование
ПрограммированиеПрограммирование
Программированиеalecsa
 
01 готовимся к экзамену по информатике. теория. задачи 2002
01  готовимся к экзамену по информатике. теория. задачи 200201  готовимся к экзамену по информатике. теория. задачи 2002
01 готовимся к экзамену по информатике. теория. задачи 2002dfdkfjs
 
Разработка системы "EASYCONTROLLER". Системы программирования промышленных ло...
Разработка системы "EASYCONTROLLER". Системы программирования промышленных ло...Разработка системы "EASYCONTROLLER". Системы программирования промышленных ло...
Разработка системы "EASYCONTROLLER". Системы программирования промышленных ло...RSATU-UMNIK
 
03 04 кодирование информации
03 04 кодирование информации03 04 кодирование информации
03 04 кодирование информацииSergey Lomakin
 
Способы записи алгоритмов
Способы записи алгоритмовСпособы записи алгоритмов
Способы записи алгоритмовAndrey Dolinin
 
presentation Algoritm
presentation Algoritmpresentation Algoritm
presentation Algoritmklochkova
 
Ayan9r1 po(1)
Ayan9r1 po(1)Ayan9r1 po(1)
Ayan9r1 po(1)Ayan_R
 
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...
Некоторые трудности при обучении программированию:что нельзя обойти и умолч...Некоторые трудности при обучении программированию:что нельзя обойти и умолч...
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...Alexey Neznanov
 
эволюция языков программирования
эволюция языков программированияэволюция языков программирования
эволюция языков программированияAndrey Radionov
 
Запись алгоритмов на языках программирования
Запись алгоритмов на языках программированияЗапись алгоритмов на языках программирования
Запись алгоритмов на языках программированияssusere39acb
 
Ввведение в java
Ввведение в javaВвведение в java
Ввведение в javaUnguryan Vitaliy
 
Введение в язык программирования «Java»
Введение в язык программирования «Java»Введение в язык программирования «Java»
Введение в язык программирования «Java»Unguryan Vitaliy
 
Язык программирования Pascal
Язык программирования PascalЯзык программирования Pascal
Язык программирования PascalSchool 242
 
Введение в Clojure (Margincon 2010)
Введение в Clojure (Margincon 2010)Введение в Clojure (Margincon 2010)
Введение в Clojure (Margincon 2010)Alex Ott
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямSergey Staroletov
 

Ähnlich wie 13 алгоритмизация, программирование, инструментальное по (20)

лекция1
лекция1лекция1
лекция1
 
Функции в языке программирования QBasic
Функции в языке программирования QBasicФункции в языке программирования QBasic
Функции в языке программирования QBasic
 
Программирование
ПрограммированиеПрограммирование
Программирование
 
01 готовимся к экзамену по информатике. теория. задачи 2002
01  готовимся к экзамену по информатике. теория. задачи 200201  готовимся к экзамену по информатике. теория. задачи 2002
01 готовимся к экзамену по информатике. теория. задачи 2002
 
Разработка системы "EASYCONTROLLER". Системы программирования промышленных ло...
Разработка системы "EASYCONTROLLER". Системы программирования промышленных ло...Разработка системы "EASYCONTROLLER". Системы программирования промышленных ло...
Разработка системы "EASYCONTROLLER". Системы программирования промышленных ло...
 
03 04 кодирование информации
03 04 кодирование информации03 04 кодирование информации
03 04 кодирование информации
 
лекция 3
лекция 3лекция 3
лекция 3
 
Способы записи алгоритмов
Способы записи алгоритмовСпособы записи алгоритмов
Способы записи алгоритмов
 
8 2-2
8 2-28 2-2
8 2-2
 
presentation Algoritm
presentation Algoritmpresentation Algoritm
presentation Algoritm
 
Ayan9r1 po(1)
Ayan9r1 po(1)Ayan9r1 po(1)
Ayan9r1 po(1)
 
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...
Некоторые трудности при обучении программированию:что нельзя обойти и умолч...Некоторые трудности при обучении программированию:что нельзя обойти и умолч...
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...
 
эволюция языков программирования
эволюция языков программированияэволюция языков программирования
эволюция языков программирования
 
Запись алгоритмов на языках программирования
Запись алгоритмов на языках программированияЗапись алгоритмов на языках программирования
Запись алгоритмов на языках программирования
 
Ввведение в java
Ввведение в javaВвведение в java
Ввведение в java
 
Введение в язык программирования «Java»
Введение в язык программирования «Java»Введение в язык программирования «Java»
Введение в язык программирования «Java»
 
Язык программирования Pascal
Язык программирования PascalЯзык программирования Pascal
Язык программирования Pascal
 
Введение в Clojure (Margincon 2010)
Введение в Clojure (Margincon 2010)Введение в Clojure (Margincon 2010)
Введение в Clojure (Margincon 2010)
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциям
 
85004
8500485004
85004
 

Mehr von Sergey Lomakin

25 перспективы развития информационных технологий
25 перспективы развития информационных технологий25 перспективы развития информационных технологий
25 перспективы развития информационных технологийSergey Lomakin
 
24 компьютерная преступность и защита информации
24 компьютерная преступность и защита информации24 компьютерная преступность и защита информации
24 компьютерная преступность и защита информацииSergey Lomakin
 
23 глобальные компьютерные сети
23 глобальные компьютерные сети23 глобальные компьютерные сети
23 глобальные компьютерные сетиSergey Lomakin
 
22 коммуникационное оборудование и организация компьютерных сетей
22 коммуникационное оборудование и организация компьютерных сетей22 коммуникационное оборудование и организация компьютерных сетей
22 коммуникационное оборудование и организация компьютерных сетейSergey Lomakin
 
21 компьютерные сети, назначение и классификация
21 компьютерные сети, назначение и классификация21 компьютерные сети, назначение и классификация
21 компьютерные сети, назначение и классификацияSergey Lomakin
 
20 устройства хранения информации
20 устройства хранения информации20 устройства хранения информации
20 устройства хранения информацииSergey Lomakin
 
19 устройства вывода информации
19 устройства вывода информации19 устройства вывода информации
19 устройства вывода информацииSergey Lomakin
 
18 устройства ввода информации лекция
18 устройства ввода информации лекция18 устройства ввода информации лекция
18 устройства ввода информации лекцияSergey Lomakin
 
17 внутреннее устройство пк лекция
17 внутреннее устройство пк лекция17 внутреннее устройство пк лекция
17 внутреннее устройство пк лекцияSergey Lomakin
 
16 процессоры и память эвм лекция
16 процессоры и память эвм лекция16 процессоры и память эвм лекция
16 процессоры и память эвм лекцияSergey Lomakin
 
15 принцип работы и классификация эвм
15 принцип работы и классификация эвм15 принцип работы и классификация эвм
15 принцип работы и классификация эвмSergey Lomakin
 
12 методо и проблемо ориентированное по, информационные системы, гис
12 методо и проблемо ориентированное по, информационные системы, гис12 методо и проблемо ориентированное по, информационные системы, гис
12 методо и проблемо ориентированное по, информационные системы, гисSergey Lomakin
 
11 по общего назначения, интегрир и мультимедиа
11 по общего назначения, интегрир и мультимедиа11 по общего назначения, интегрир и мультимедиа
11 по общего назначения, интегрир и мультимедиаSergey Lomakin
 
10 по общего назначения, эл текст, табл, бд
10 по общего назначения, эл текст, табл, бд10 по общего назначения, эл текст, табл, бд
10 по общего назначения, эл текст, табл, бдSergey Lomakin
 
09 компьютерные вирусы
09 компьютерные вирусы09 компьютерные вирусы
09 компьютерные вирусыSergey Lomakin
 
08 сервисное по, средства контроля и диагностики, архиваторы, обслуживание ди...
08 сервисное по, средства контроля и диагностики, архиваторы, обслуживание ди...08 сервисное по, средства контроля и диагностики, архиваторы, обслуживание ди...
08 сервисное по, средства контроля и диагностики, архиваторы, обслуживание ди...Sergey Lomakin
 
07 история развития и обзор ос, характеристики ос windows
07 история развития и обзор ос, характеристики ос windows07 история развития и обзор ос, характеристики ос windows
07 история развития и обзор ос, характеристики ос windowsSergey Lomakin
 
06 по, классификация и системное
06 по, классификация и системное06 по, классификация и системное
06 по, классификация и системноеSergey Lomakin
 
05 хранение информации
05 хранение информации05 хранение информации
05 хранение информацииSergey Lomakin
 
01 введение в информатику
01 введение в информатику01 введение в информатику
01 введение в информатикуSergey Lomakin
 

Mehr von Sergey Lomakin (20)

25 перспективы развития информационных технологий
25 перспективы развития информационных технологий25 перспективы развития информационных технологий
25 перспективы развития информационных технологий
 
24 компьютерная преступность и защита информации
24 компьютерная преступность и защита информации24 компьютерная преступность и защита информации
24 компьютерная преступность и защита информации
 
23 глобальные компьютерные сети
23 глобальные компьютерные сети23 глобальные компьютерные сети
23 глобальные компьютерные сети
 
22 коммуникационное оборудование и организация компьютерных сетей
22 коммуникационное оборудование и организация компьютерных сетей22 коммуникационное оборудование и организация компьютерных сетей
22 коммуникационное оборудование и организация компьютерных сетей
 
21 компьютерные сети, назначение и классификация
21 компьютерные сети, назначение и классификация21 компьютерные сети, назначение и классификация
21 компьютерные сети, назначение и классификация
 
20 устройства хранения информации
20 устройства хранения информации20 устройства хранения информации
20 устройства хранения информации
 
19 устройства вывода информации
19 устройства вывода информации19 устройства вывода информации
19 устройства вывода информации
 
18 устройства ввода информации лекция
18 устройства ввода информации лекция18 устройства ввода информации лекция
18 устройства ввода информации лекция
 
17 внутреннее устройство пк лекция
17 внутреннее устройство пк лекция17 внутреннее устройство пк лекция
17 внутреннее устройство пк лекция
 
16 процессоры и память эвм лекция
16 процессоры и память эвм лекция16 процессоры и память эвм лекция
16 процессоры и память эвм лекция
 
15 принцип работы и классификация эвм
15 принцип работы и классификация эвм15 принцип работы и классификация эвм
15 принцип работы и классификация эвм
 
12 методо и проблемо ориентированное по, информационные системы, гис
12 методо и проблемо ориентированное по, информационные системы, гис12 методо и проблемо ориентированное по, информационные системы, гис
12 методо и проблемо ориентированное по, информационные системы, гис
 
11 по общего назначения, интегрир и мультимедиа
11 по общего назначения, интегрир и мультимедиа11 по общего назначения, интегрир и мультимедиа
11 по общего назначения, интегрир и мультимедиа
 
10 по общего назначения, эл текст, табл, бд
10 по общего назначения, эл текст, табл, бд10 по общего назначения, эл текст, табл, бд
10 по общего назначения, эл текст, табл, бд
 
09 компьютерные вирусы
09 компьютерные вирусы09 компьютерные вирусы
09 компьютерные вирусы
 
08 сервисное по, средства контроля и диагностики, архиваторы, обслуживание ди...
08 сервисное по, средства контроля и диагностики, архиваторы, обслуживание ди...08 сервисное по, средства контроля и диагностики, архиваторы, обслуживание ди...
08 сервисное по, средства контроля и диагностики, архиваторы, обслуживание ди...
 
07 история развития и обзор ос, характеристики ос windows
07 история развития и обзор ос, характеристики ос windows07 история развития и обзор ос, характеристики ос windows
07 история развития и обзор ос, характеристики ос windows
 
06 по, классификация и системное
06 по, классификация и системное06 по, классификация и системное
06 по, классификация и системное
 
05 хранение информации
05 хранение информации05 хранение информации
05 хранение информации
 
01 введение в информатику
01 введение в информатику01 введение в информатику
01 введение в информатику
 

13 алгоритмизация, программирование, инструментальное по

  • 1. Инструментальное ПО 1. Алгоритмизация 2. Языки программирования 3. Системы программирования
  • 2. © Ломакин С.В. каф.ИОМАС ВГАУ 2 АлгоритмизацияАлгоритмизация Понятие алгоритма  Слово алгоритм происходит от латинской транскрипции имени родившегося в Хиве узбекского математика IX в. Аль-Хорезми (Algorithmi). Из его трактатов Европа познакомилась с десятичной позиционной системой счисления, где, в частности, были сформулированы четкие правила выполнения четырех арифметических действий.
  • 3. © Ломакин С.В. каф.ИОМАС ВГАУ 3 АлгоритмизацияАлгоритмизация Понятие алгоритма  Алгоритм - есть точное формальное предписание, однозначно определяющее содержание и последовательность операций, переводящих заданную совокупность исходных данных в искомый результат".
  • 4. © Ломакин С.В. каф.ИОМАС ВГАУ 4 АлгоритмизацияАлгоритмизация Понятие алгоритма ТОРТ(название) сахар масло ... ... растереть добавить ЧТО ? ИЗ ЧЕГО ? КАК? алг имя алгоритма ( тип имя1, имя2, тип имя3) арг имя1, имя2, ... рез имя3, ... нач оператор 1; оператор 2;... кон РЕЦЕП Т
  • 5. © Ломакин С.В. каф.ИОМАС ВГАУ 5 АлгоритмизацияАлгоритмизация Составные части алгоритма 1. Правило начала; 2. Совокупность исходных данных; 3. Правило непосредственной обработки; 4. Совокупность промежуточных результатов; 5. Правило извлечения результата; 6. Правило окончания.
  • 6. © Ломакин С.В. каф.ИОМАС ВГАУ 6 АлгоритмизацияАлгоритмизация Свойства алгоритма  Массовость  Дискретность  Определенность  Результативность  Конечность  Формальность
  • 7. © Ломакин С.В. каф.ИОМАС ВГАУ 7 АлгоритмизацияАлгоритмизация Способы записи алгоритмов  Словесный  Словесно-формульный  Графический  На алгоритмическом языке начало x1, x2, y1, y2 D конец 2 12 2 12 )()( yyxxD −+−= begin integer i, n; real s; real array x[1:n]; s:=0; for i:=1 step 1 to n do s:=s+x[i]; s:=s/n end
  • 8. © Ломакин С.В. каф.ИОМАС ВГАУ 8 АлгоритмизацияАлгоритмизация Элементы блок-схем Преобразование данных в форму, пригодную для обработки (ввод в память ЭВМ) или регистрации результатов обработки (вывод) Ввод-вывод Проверка условий. Указывает выбор направления выполнения алгоритма в зависимости от некоторых условий Решение Вычислительное действие или последовательность вычислительных действий Процесс ПоясненияСимвол, названиеОбозначение Начало, конец, прерывание процесса обработки данных Пуск - останов
  • 9. © Ломакин С.В. каф.ИОМАС ВГАУ 9 АлгоритмизацияАлгоритмизация Элементы блок-схем Указание связи между прерванными линиями потока информации Соединитель Изображение последовательности связей между символами Линия потока Вывод, печать результатов на бумагеДокумент Выполнение действий, меняющих команды или группы команд Модификация
  • 10. © Ломакин С.В. каф.ИОМАС ВГАУ 10 АлгоритмизацияАлгоритмизация Базовые алгоритмические конструкции  Линейным называют вычислительный процесс, в котором этапы вычислений выполняются в линейной последовательности и каждый этап выполняется только один раз  Разветвляющийся вычислительный процесс реализуется по одному из нескольких заранее предусмотренных направлений в зависимости от выполнения некоторого условия (рис. 35, а).  Циклический вычислительный процесс включает участки, на которых вычисления выполняются многократно по одним и тем же математическим формулам, но при разных значениях исходных данных.
  • 11. © Ломакин С.В. каф.ИОМАС ВГАУ 11 АлгоритмизацияАлгоритмизация Линейный вычислительный процесс 2 12 2 12 )()( yyxxD −+−= начало x1, x2, y1, y2 D конец 2 12 2 12 )()( yyxxD −+−=
  • 12. © Ломакин С.В. каф.ИОМАС ВГАУ 12 АлгоритмизацияАлгоритмизация Разветвляющийся вычислительный процесс      >− = <− = axåñëèax axåñëè axåñëèxa y ),cos( ,1 , начало x, a x < a ? x = a y = a - x y = 1 y = cos (x-a) y конец да нет да нет
  • 13. © Ломакин С.В. каф.ИОМАС ВГАУ 13 АлгоритмизацияАлгоритмизация Циклический вычислительный процесс  Для организации цикла необходимо предусмотреть:  1.задание начального значения параметра цикла - переменной, которая будет изменяться при повторении цикла;  2.изменение значения этой переменной перед каждым новым повторением цикла;  3.проверку условия окончания повторений по значению параметра и переход к началу цикла, если повторения не закончены.  Пример. Составить таблицу значений функции у = вх2-а для -1 < x < 1 c шагом ∆х = 0.2 . начало a, b, xn, xk, ∆x x = xn y = bx2 -a x = x+∆x x, y x < xk конец нет да 1 2 4 3 6 5
  • 14. АлгоритмизацияАлгоритмизация Принципы структурной алгоритмизации  Структурная алгоритмизация основывается на двух принципах:  1) последовательная детализация "сверху - вниз";  2) ограниченность базового набора структур  Достоинства структурного программирования:  1) возможность преодоления барьера сложности программ (сложная задача разбивается на достаточно простые, легко воспринимаемые части);  2) возможность демонстрации правильности программ на различных этапах решения задачи;  3) наглядность программ;  4) простота модификации (внесение изменений) программ; © Ломакин С.В. каф.ИОМАС ВГАУ 14
  • 15. © Ломакин С.В. каф.ИОМАС ВГАУ 15 Инструментальное программное обеспечение (Software Tools)  Инструментальные программные средства (software tools) - совокупность программ, которые используются в процессе разработки программ. Инструментальное ПО Языки программирования Трансляторы Системы программирования
  • 16. © Ломакин С.В. каф.ИОМАС ВГАУ 16 Языки программирования  Язык программирования - это система обозначений, служащая для точного описания программ или алгоритмов для ЭВМ. Языки программирования являются искусственными языками, в которых синтаксис и семантика строго определены. Поэтому они не допускают свободного толкования выражений, характерного для естественного языка.  Основные требования, предъявляемые к языкам программирования:  наглядность - использование в языке по возможности уже существующих символов, хорошо известных и понятных как программистам, так и пользователям ЭВМ;  единство - использование одних и тех же символов для обозначения одних и тех же или родственных понятий в разных частях алгоритма.  гибкость - возможность относительно удобного, несложного описания распространенных приемов математических вычислений  модульность - возможность описания сложных алгоритмов в виде совокупности простых модулей  однозначность – недвусмысленность используемых инструкций.
  • 17. © Ломакин С.В. каф.ИОМАС ВГАУ 17 Языки программирования  Простейшей конструкцией языка программирования является оператор.  Различают языки программирования низкого и высокого уровня. К языкам низкого уровня относят машинный язык, который представляет собой последовательность команд, записанных в двоичных кодах. Каждое слово машинного языка управляет тем или иным действием ЭВМ - арифметическими, логическими, вспомогательными операциями и т.д. Языки этого вида позволяют наиболее полно использовать аппаратные возможности ЭВМ. Они были первыми языками общения человека с ЭВМ.  Недостатки:  трудоемкость программирования и отладки из-за отсутствия средств автоматизации этих процессов  отсутствие наглядности  Необходимо подробно представлять себе все детали структуры и работы ЭВМ.  Языки программирования высокого уровня позволяют кратко (лаконично) и вместе с тем емко определять задания для вычислительной машины в терминах, соответствующих некоторой области применения и близких к разговорному языку.
  • 18. © Ломакин С.В. каф.ИОМАС ВГАУ 18 3.3.22. Языки и системы программирования. Языки и системы программирования ПредысторияПредыстория Первая попытка создать высоко- уровневый язык программирования принадлежит гениальному Конраду Цузе (конец 1940-х годов), разработавшему Plancalcul (планировщик вычислений). «Plancalcul родился исключительно как результат теоретической работы, без всякой связи с тем, появится или нет в обозримом будущем машины, подходящие к программам на Plancalcul». Фрагмент рукописи Цузе с шахматной программой на языке Plancalcul
  • 19. © Ломакин С.В. каф.ИОМАС ВГАУ 19 3.3.22. Языки и системы программирования. Языки и системы программирования Наиболее активный период разработки языков и систем программирования приходится на 1960-е годы. За это десятилетие в мире родилось более тысячи разнообразных языков, как универсальных, так и специализированных, но выжили и доросли до XXI века дожили немногие, в том числе бессмертные Fotran, Basic, Algol, Cobol, Simula, Lisp и их потомки. На рисунке: «вавилонская башня» языков программи- рования, созданных в 1960-е годы
  • 20. © Ломакин С.В. каф.ИОМАС ВГАУ 20 3.3.22. Языки и системы программирования. Языки и системы программирования Родословная основных высокоуровневых языков программирования Cobol Fortran Fortran-77 Basic Visual Basic Algol-68 Altair-Basic Fortran-IV Cobol-85 IMS dBASE FoxPro Visual FoxPro Visual Basic Fortran Cobol SQL SQL Pascal Algol-60 PL/1 Turbo Pascal Object Pascal Ada Ada Simula Simula-67 Smalltalk Smalltalk B C C++ Java Java Visual C++ Lisp Prolog Lisp Prolog Delphi Delphi Visual C++ Modula Visual FoxPro Simula Modula 1960 1970 1980 1990 2000 Logo Logo
  • 21. © Ломакин С.В. каф.ИОМАС ВГАУ 21 3.3.22. Языки и системы программирования. Языки и системы программирования БессмертныйБессмертный FortranFortran Fortran = FORmula TRANslator Первый высокоуровневый язык программирования Fortran был разработан в фирме IBM под руководством Джона Бэкуса (Backus, John; р. 1924). Работа над языком началась в 1954 г., первая реализация для IBM 704 в выполнена в 1957 г. 1960 1970 1980 1990 2000 Fortran Fortran-77 Basic Fortran-IV Algol-60 Fortran
  • 22. © Ломакин С.В. каф.ИОМАС ВГАУ 22 Фрагмент программы на языке Fortran C MAIN PROGRAM 101 FORMAT(208) 102 FORMAT(//’N=’,15, 5X, ’R=’, 15 1//6X, ’M’, 5X, PROB) 103 FORMAT(18, F14.10) 201 READ(1,101) N, IR WRITE(3,102) N, IR IF(N) 202, 202, 203 202 STOP 203 IF(IR) 202, 202, 204 204 M=O P=COMBF(N,M)*COMBF(IR-1,N-M-1) 1/COMBF(N+IR-1,IR) ... 3.3.22. Языки и системы программирования. Языки и системы программирования БессмертныйБессмертный FortranFortran
  • 23. © Ломакин С.В. каф.ИОМАС ВГАУ 23 3.3.22. Языки и системы программирования. Языки и системы программирования Basic –Basic – язык для начинающихязык для начинающих BASIC = Beginners All-purpuse Symbolic Instruction Code Язык Basic был разработан в 1964 г. в Дармутском колледже в г. Хановере (Darmouth College, Hanover), штат Нью-Хемпшир Fortran Basic Visual BasicAltair-Basic Fortran-IV 1960 1970 1980 1990 2000
  • 24. © Ломакин С.В. каф.ИОМАС ВГАУ 24 3.3.22. Языки и системы программирования. Языки и системы программирования Basic –Basic – язык для начинающихязык для начинающих Авторы языка Basic. Стоит Джон Кемени (Kemeny, John G.; 1926-1993), сидит Томас Курц (Kurtz, Thomas E.; р. 1928) 10 dim A(5) 20 for i=1 to 5 30 input A(i) 40 next i 50 if i=5 then goto 140 60 if A(i)<=A(i+1) then goto 90 70 i=i+1 80 goto 130 90 z=A(i) 100 A(i)=A(i+1) 110 A(i+1)=z 120 i=1 130 goto 50 140 for i=1 to 5 150 print A(i) 160 next i Простейшая программа на языке Basic
  • 25. © Ломакин С.В. каф.ИОМАС ВГАУ 25 Будущие создатели Microsoft Пол Аллен (Allen, Paul; р. 1954) и Билл Гейтс (Gates, William; р. 1955) познакомились с Бэйсиком, работая в компьютерном классе школы в Сиэтле (снимок 1968 г.) 3.3.22. Языки и системы программирования. Языки и системы программирования Basic –Basic – язык для начинающихязык для начинающих
  • 26. © Ломакин С.В. каф.ИОМАС ВГАУ 26 Начав с Бэйсика, компания Microsoft превратилась в крупнейшую софтверную империю, а Билл Гейтс – стал самым богатым человеком на планете 3.3.22. Языки и системы программирования. Языки и системы программирования Basic –Basic – язык для начинающихязык для начинающих Штаб - квартира корпорации Microsoft в Редмонде (пригород Сиэтла)
  • 27. © Ломакин С.В. каф.ИОМАС ВГАУ 27 На протяжении нескольких десятилетий Visual Basic оставался фирменный языком компании Microsoft. В начале 1990-х годов он стал объектным и приобрел средства визуального проектирования 3.3.22. Языки и системы программирования. Языки и системы программирования Basic –Basic – язык для начинающихязык для начинающих
  • 28. © Ломакин С.В. каф.ИОМАС ВГАУ 28 3.3.22. Языки и системы программирования. Языки и системы программирования PascalPascal и его потомкии его потомки Член комитета по Алголу-68 Никлаус Вирт (Wirth, Niklaus; р. 1934) был против принятия переусложненного стандарта. В знак доказательства своей правоты он разработал в 1971 г. простой и ясный алголоподобный язык, предназначенный прежде всего для обучения студентов в Федеральном техническом университете в Швейцарии. В честь изобретателя первой вычислительной машины Вирт назвал язык Паскалем. Pascal Algol-60 Turbo Pascal Object Pascal Ada Ada Delphi Delphi Modula Algol-68 Modula Smalltalk 1960 1970 1980 1990 2000
  • 29. © Ломакин С.В. каф.ИОМАС ВГАУ 29 Программа на Паскале, вычисляющая среднее арифметическое n чисел var i, n: integer; s: float; x: array[1..n] of real; begin s:=0; for i:=1 to n do s:=s+x[i]; s:=s/n end. 3.3.22. Языки и системы программирования. Языки и системы программирования PascalPascal и его потомкии его потомки
  • 30. © Ломакин С.В. каф.ИОМАС ВГАУ 30 Среда разработки Delphi фирмы Borland объединила передовые достижения технологии программирования: объектное расширение языка Pascal, визуально- событийное проектирование, модульное структурирование и раздельная компиляция. 3.3.22. Языки и системы программирования. Языки и системы программирования PascalPascal и его потомкии его потомки
  • 31. © Ломакин С.В. каф.ИОМАС ВГАУ 31 3.3.22. Языки и системы программирования. Языки и системы программирования СуперязыкСуперязык PLPL/1/1Cobol Algol-60 PL/1 1960 1970 EXAMPLE: PROCEDURE OPTIONS (MAIN); ON ENDFILE (SYSIN) GO TO ENDING; P1: GET LIST (A, B, C); D = B*B — 4*A*C; E = —B/(A+A); IF D<0 THEN DO; X1, X2 = E; Y1 = SQRT(—D)/(A+A); END; ELSE DO; R = SQRT(D)/(A+A); … Y1 = 0; END; Y2 = —Y1; PUT LIST (X1, Y1, X2, Y2); GO TO P1; ENDING:; END EXAMPLE; PL/1 = Programming Language One Язык PL/1 представлял собой механическую смесь идей из многих языков. Критики сравнивали его с елкой со множеством украшений.
  • 32. © Ломакин С.В. каф.ИОМАС ВГАУ 32 3.3.22. Языки и системы программирования. Языки и системы программирования С – язык для профессионаловС – язык для профессионалов Язык Си (С) был создан Деннисом Ричи (Ritchie, Dennis M.; р. 1941) в 1973 году в Bell Labs в ходе разработки операционной системы UNIX. Он развивал язык Би (B), который основывался на созданном в Кембриджском университете языке BCPL (от Basic Combined Programming Language), который в свою очередь был потомком Алгола-60 1960 1970 1980 1990 2000 Algol-60 Smalltalk B C C++ Java Java Visual C++ Visual C++ PL/1
  • 33. © Ломакин С.В. каф.ИОМАС ВГАУ 33 Текст на языке С отличается лаконичностью float A[5]; for(int i=0;i<5;i++)scanf("%f",&A[i]); i=0; while(i<4){ if(A[i]<=A[i+1])i++; else{ z=A[i]; A[i]=A[i+1]; A[i+1]:=z; i=0; } }; for(i=0;i<5;i++)printf("%fn",A[i]); 3.3.22. Языки и системы программирования. Языки и системы программирования С – язык для профессионаловС – язык для профессионалов
  • 34. © Ломакин С.В. каф.ИОМАС ВГАУ 34 3.3.22. Языки и системы программирования. Языки и системы программирования Java –Java – дитя интернетадитя интернета В 1995 г. фирма Sun Microsystems представила язык Java для программирования в интернете. Он возник в ходе реализации проекта Oak («Дуб»), целью которого было создание системы программирования бытовых микропроцессорных устройств. Джеймс Гослинг (Gosling, James) – автор Java.
  • 35. © Ломакин С.В. каф.ИОМАС ВГАУ 35 Java - технология 3.3.22. Языки и системы программирования. Языки и системы программирования Java –Java – дитя интернетадитя интернета Internet Виртуальная Java-машина JVM Байт-код Компилятор Исходный текст на Java Web-браузер СерверКлиент class test { int i, n; float s; float x[n]; public static void main( String args[] ) { n = 10; s = 0; for( i=1; i<=n; i++) { s = s + x[i-1]; s = s / n; } } Язык Java основан на С++
  • 36. © Ломакин С.В. каф.ИОМАС ВГАУ 36 Lisp = LISt Processing Язык Lisp создан в 1960 году Джоном Маккарти (McCarthy, John; р. 1927 ) в Массачусетском технологи- ческом институте на теоретическом фундаменте лямбда-исчисления, пред- ложенного еще в 1930 году известным американским логиком Алонзо Черчем. 3.3.22. Языки и системы программирования. Языки и системы программирования ДолгожительДолгожитель Lisp –Lisp – инструмент функциональногоинструмент функционального программированияпрограммирования Lisp Prolog Lisp 1960 1970 1980 1990 2000 Дж. Маккарти и А.П. Ершов Снимок 1975 г.
  • 37. © Ломакин С.В. каф.ИОМАС ВГАУ 37 3.3.22. Языки и системы программирования. Языки и системы программирования Prolog –Prolog – несостоявшаяся мечта ЭВМнесостоявшаяся мечта ЭВМ VV поколенияпоколения Prolog = PROgramming for LOGic Теоретические основы языка были разработаны Робертом Ковальским (Kowalski, Robert) в Эдинбургском университете (Шотландия) в конце 1960-х годов Первая практическая реализация языка осуществлена Аленом Кольмари (Colmerauer, Alain ) в Марсельском университете (Франция) в 1972 г. 1960 1970 1980 1990 2000 Prolog Prolog Lisp
  • 38. © Ломакин С.В. каф.ИОМАС ВГАУ 38 Факты: муж (петя), муж (ваня), муж (коля), жен (таня), жен (маша), мать (ваня, таня), отец (ваня, петя), отец (маша, ваня), отец (коля, ваня). Правила вывода: родитель (X, Y) :— отец (X, Y) родитель (X, Y) :— мать (X, Y) дед (X, Y) :— родитель (X, Z), отец (Z, Y) брат (X, Y) :— муж (Y), родитель (X, Z), родитель (Y, Z), X<>Y Примеры диалога: GOAL> дед (коля, X) Кто дед Коли? X = Петя GOAL> брат (маша, X) Кто брат Маши? X = Коля Ж М М Ж М Таня Петя Ваня Маша Коля Описание предметной области семейных отношений на языке Prolog 3.3.22. Языки и системы программирования. Языки и системы программирования Prolog –Prolog – несостоявшаяся мечта ЭВМнесостоявшаяся мечта ЭВМ VV поколенияпоколения
  • 39. © Ломакин С.В. каф.ИОМАС ВГАУ 39 Концептуальные отличия ЭВМ V поколения: • новая технология производства микросхем, знаменующая переход от кремния к арсениду галлия, и дающая возможность на порядок повысить быстродействие основных логических элементов; • новая архитектура (не фон-неймановская); • новые способы ввода-вывода информации — распознавание и синтез речи и образов; • отказ от традиционных алгоритмических языков программирования (Фортран, Алгол и т. п.) в пользу декларативных; • ориентация на задачи искусственного интеллекта с автоматическим поиском решения на основе логического вывода. 3.3.22. Языки и системы программирования. Языки и системы программирования Prolog –Prolog – несостоявшаяся мечта ЭВМнесостоявшаяся мечта ЭВМ VV поколенияпоколения
  • 40. © Ломакин С.В. каф.ИОМАС ВГАУ 40 Язык запросов высокого уровня Язык ядра Естественный язык. Общение голосом и графикой Система управления базами знаний Система решения задач и получения логического вывода Система интеллектуального интерфейса Машина базы знаний Машина решения задач и получения выводов Машина интеллектуального интерфейса Аппаратные средства Программные средства Внешний интерфейс К сетям ЭВМ V поколенияСтруктура ЭВМ V поколения 3.3.22. Языки и системы программирования. Языки и системы программирования Prolog –Prolog – несостоявшаяся мечта ЭВМнесостоявшаяся мечта ЭВМ VV поколенияпоколения
  • 41. © Ломакин С.В. каф.ИОМАС ВГАУ 41 3.3.22. Языки и системы программирования. Языки и системы программирования Уроки историиУроки истории  Ada - ориентированный на применение в системах реального времени и предназначенный для автоматизации задач управления процессами и/или устройствами, например, в бортовых (корабельных, авиационных и др.)  DBASE, FoxPro , SQL (Structured Query Language) – для разработки и обслуживания баз данных  PostScript - является одним из основных стандартов для печати и передачи документов  VRML (Virtual Reality Modelling Language) — язык моделирования виртуальной реальности  Occam - предназначен для организации параллельного программирования и создания транспьютеров
  • 42. © Ломакин С.В. каф.ИОМАС ВГАУ 42 3.3.22. Языки и системы программирования. Языки и системы программирования Уроки историиУроки истории Основные парадигмы программирования: • процедурное программирование (Fortran, Basic, Cobol, Algol, Pascal, Ada, С, Logo, FoxPro); • объектно-ориентированное программирование (Simula, Smalltalk, Object Pascal, C++, Java, C#); • визуально-событийное программирование (Visual Basic, Delphi, Visual C++, Visual Java, Visual FoxPro); • функциональное программирование (Lisp); • логическое программирование (Prolog).
  • 43. © Ломакин С.В. каф.ИОМАС ВГАУ 43 Языки программирования Классификация и специализация  Классификация и специализация языков программирования:  - для программирования научно-технических задач - Фортран  - для обучения программированию - Паскаль и Бейсик;  - для решения перспективных задач искусственного интеллекта - Пролог и Лисп;  - для решения как научно-технических, так и экономических задач - многоцелевые универсальные языки ПЛ-1, Алгол-68, Ада.  Для решения задач на конкретных ЭВМ или группах ЭВМ со сходными характеристиками используются машинно- ориентированные языки. Наиболее распространенным языком этого типа является Ассемблер.
  • 44. © Ломакин С.В. каф.ИОМАС ВГАУ 44 Языки программирования Типы данных ВЕЛИЧИНЫ ЦЕЛЫЕ ВЕЩЕСТВЕННЫЕ НАТУРАЛЬНЫЕ ЛИТЕРНЫЕ КОН- СТАН- ТЫ ПЕРЕ- МЕН- НЫЕ Т И П ЗНАЧЕНИЕ сразу ИМЯ И ЗНАЧЕНИЕ как получаетсятолько место с индексами простые пассажир1 пассажир2 Иванов Петр Петров Иван шофер Иванов Иван автобус пассажиры МАССИВвещ таб P[1:15] цел таб M[1:N, 1:K] вещ A цел I нат N лит X
  • 45. © Ломакин С.В. каф.ИОМАС ВГАУ 45 Трансляторы, трансляция программ  Перевод программы с алгоритмического языка на машинный осуществляется ЭВМ с помощью специальной программы, которая называется транслятор. В программе - трансляторе "заложены" все правила алгоритмического языка и способы преобразования различных его конструкций на машинный язык.  Существуют два типа трансляторов: компиляторы и интерпретаторы.  Интерпретатор анализирует исходный текст программы и последовательно транслирует ее на машинный язык по частям (отдельным командам и операторам ) и непосредственно следует выполнение их ЭВМ.  Компилятор производит перевод всей программы в машинные коды с сохранением их в виде объектного модуля. Эти объектные модули могут быть использованы программами написанными на других языках программирования.
  • 46. Этапы разработки прикладных программ Существуют различные способы разделения этого процесса на этапы, однако обязательными считаются следующие: определение требований к задаче (постановка задачи и построение модели); проектирование (построение алгоритма решения); программирование; компоновка; тестирование; документирование © Ломакин С.В. каф.ИОМАС ВГАУ 46
  • 47. © Ломакин С.В. каф.ИОМАС ВГАУ 47
  • 48. ИДЕИ, ОСПАРИВАТЬ КОТОРЫЕ БЕСПОЛЕЗНО  1. В любой программе существуют ошибки. Критерий корректности программ - не наличие или отсутствие ошибок, а степень их критичности.  2. Программа никогда не бывает закончена. После написания "окончательного" варианта будут еще изменения (ошибки), которые захочется внести (исправить). Однако желательно где-нибудь остановиться.  3. Чем меньше программа, тем она лучше. Если вы работаете над программой, и ее объем постоянно увеличивается, значит надо ее стереть и вернуться к какой-нибудь предыдущей версии. Улучшать программу можно только до тех пор, пока ее объем уменьшается.  4. Процесс программирования - процесс выбора между эффективностью и универсальностью. Или программа пишется долгое время, но получается универсальной, или она пишется быстро, но получается неуклюжей и громозкой. Задача программиста - выбрать подходящий компромис между эффективностью и универсальностью. © Ломакин С.В. каф.ИОМАС ВГАУ 48

Hinweis der Redaktion

  1. Слово алгоритм происходит от латинской транскрипции имени родившегося в Хиве узбекского математика IX в. Аль-Хорезми (Algorithmi). Из его трактатов Европа познакомилась с десятичной позиционной системой счисления, где, в частности, были сформулированы четкие правила выполнения четырех арифметических действий. Понятие &amp;quot;алгоритм&amp;quot; занимает одно из центральных мест в жизнедеятельности человека. С этим понятием мы сталкиваемся практически постоянно, когда планируем выполнить какие-то действия. Самым простейшим собранием алгоритмов можно считать обычную кулинарную книгу. Примером этого понятия может также служить алгоритм перевода с одного языка на другой; алгоритм работы железнодорожного диспетчера, перерабатывающего информацию о движении поездов в приказания, регулирующие это движение, и о многие другие примеры алгоритмического описания процессов управления.
  2. Существует множество определений алгоритма передающих его сущность. Мы остановимся на следующем толковании: Алгоритм - есть точное формальное предписание, однозначно определяющее содержание и последовательность операций, переводящих заданную совокупность исходных данных в искомый результат&amp;quot;.
  3. Житейским примером, который может быть использован для пояснения способа записи алгоритма, является любой кулинарный рецепт - как приготовить определенное блюдо (что) из определенных продуктов (из чего)? Аналогия полная. Имя алгоритма - это название производимого продукта. Если алгоритм пишется для ЭВМ, то его часто так и называют - программный продукт. Указание типов имен, являющихся аргументами (входами) и результатами (выходами) алгоритма - это задание конкретных характеристик величин, для обработки которых предназначен алгоритм. Алгоритмы в науке встречаются на каждом шагу - умение решать задачу &amp;quot;в общем виде&amp;quot; всегда означает, по существу, владение некоторым алгоритмом. Для некоторых задач существуют алгоритмы, которые всегда работают, хотя существуют многие математические задачи, которые алгоритмически неразрешимы (т.е. не существует универсальных способов решения этих задач).
  4. Работа алгоритма начинается подготовительным шагом, так называемым &amp;quot;правилом начала&amp;quot;. Преобразования происходят до тех пор, пока некоторый промежуточный результат не станет заключительным; это есть &amp;quot;правило окончания&amp;quot;. Если ни для какого из возникающих промежуточных результатов правило окончания не дает сигнала остановки, то либо к каждому из возникающих промежуточных результатов применимо правило непосредственной переработки, и алгоритмический процесс продолжается неограниченно, либо же к некоторому промежуточному результату правило непосредственной обработки оказывается неприменимым, и процесс оканчивается безрезультатно. Таким образом, для каждого алгоритма можно выделить семь характеризующих его параметров: 1) правило начала; 2) совокупность исходных данных; 3) правило непосредственной обработки; 4) совокупность возможных результатов; 5) совокупность промежуточных результатов; 6) правило извлечения результата; 7) правило окончания. Начало. Любой план, зафиксированный в виде документа или хранящийся в памяти человека, так и останется планом, пока он не будет приведен в действие. Программа, хранящаяся в памяти компьютера, так и останется нереализованной, пока ее кто-то или что-то не приведет в действие. Совокупность исходных данных. Компьютер, работающий по определенному алгоритму (программе), должен получить для переработки какие-либо исходные данные (в том числе и хранящиеся отдельно, но внутри компьютера). Процесс переработки. Этот компонент алгоритма, является наиболее важным. Именно он и составляет большую часть алгоритма и определяет конечный результат. Совокупность возможных и промежуточных результатов есть ни что иное как результат работы алгоритма. КПД вычислительного процесса не является 100% т.к. в ходе решения неизбежно образуется некоторое количество промежуточных результатов. Сведение их к минимуму как раз и определяет эффективность того или иного алгоритма. Извлечение результата. Из всей совокупности результатов, образовавшейся в ходе реализации некоторого алгоритма, необходимо правильно извлечь окончательный результат. Фактически, это завершающий этап деятельности любого вычислительного процесса. Необходимо отметить, что ввиду того, что существуют алгоритмы разветвленной структуры, совокупность извлекаемых результатов должна содержать информацию о пути, по которому они были получены. Окончание. Любой процесс не может длиться бесконечно долго. Результат всегда должен быть получен за конечное, пусть даже очень большое количество шагов. Из всего сказанного можно сделать следующий вывод: все упомянутые компоненты алгоритма необходимы, а отсутствие любого из них приводит к тому, что алгоритм как единое целое - разрушается.
  5. Основными свойствами алгоритма являются: 1) Массовость - свойство алгоритма, позволяющее применить его к широкому кругу задач рассматриваемого типа, при любых наборах исходных данных, а не к какому-то отдельному варианту. Кроме того, массовость алгоритма предполагает возможность достаточно легкой его модификации для решения задач близких к рассматриваемому типу. 2) Дискретность алгоритма означает последовательность выполняемых один за другим отдельных законченных шагов, возможность выполнения которых не вызывает сомнений. 3) Определенность (детерминированность) - любое предписание алгоритма должно быть строго определено и не допускать неоднозначного толкования. 4) Результативность - Алгоритм должен приводить к решению задачи за конечное число шагов. 5) Конечность алгоритма - свойство, предполагающее обязательное достижение результата за конечное, пусть и очень большое число шагов. В алгоритме должны быть предусмотрены меры против &amp;quot;зацикливания&amp;quot; - случайного или преднамеренного перехода алгоритма в режим бесконечного повторения одних и тех же действий без возможности завершения процесса. Бесконечные математические методы, основанные на вычислении сумм бесконечного количества слагаемых и им подобные, а также операции с предельными переходами, должны быть сведены к конечным (в т.ч. приближенным) результатам. 6) Формальность алгоритма - свойство, позволяющее любому исполнителю, способному воспринимать и выполнять указания алгоритма, правильно выполнить весь алгоритм. Например, ЭВМ способна решить конкретную задачу по заданному алгоритму (программе), хотя, безусловно, сути задачи не понимает. Обратите внимание на то, что алгоритм должен содержать только те операции, которые исполнитель способен воспринимать и выполнять. (Например, делить на ноль не умеет никто, в т.ч. и ЭВМ).
  6. При решении большинства задач не удается одновременно разрабатывать и описывать алгоритм на языке программирования (алгоритмическом языке), понятном ЭВМ. Поэтому алгоритм предварительно должен быть записан одним из способов, облегчающих его перевод на машинный язык. Традиционно сложились следующие способы записи алгоритмов: словесная, словесно-формульная, в виде блок-схем, на алгоритмическом языке и многие другие. Словесная. Чаще всего используется на бытовом уровне и представляет собой описание какой-либо последовательности действий на естественном языке. Например: (пойди туда, возьми то, принеси сюда). Этот способ также применяется и при описании сложных технологий в науке, промышленности, экономике и других отраслях человеческой деятельности. Словесное описание не ограничивается каким-либо определенным набором слов или языком. Человек любой национальности может описать алгоритм на своем языке. Необходимо только сконструировать это описание так, чтобы оно удовлетворяло всем требованиям, предъявляемым к алгоритму. Однако словесное описание алгоритма на любом естественном языке обладает обычно такими недостатками, как возможность неоднозначного понимания предписаний и утверждений; громоздкость, связанная с избыточностью разговорных языков (наличие в предложениях слов, без которых можно обойтись); отсутствие наглядности логических связей между частями алгоритма, неточность определений. Словесно-формульная запись алгоритма решения задачи наиболее часто применяется при описании алгоритмов содержащих математические выражения. Он основан на использовании математических символов и выражений в сочетании со словесными пояснениями. Все расчетные выражения записываются в таком виде, в каком они применяются в математике. Например: (F = m*a, где m - масса тела, а – ускорение тела). Преимуществами этой формы записи является простота и компактность, а недостатками - то же привязанность невычислительных операторов к национальным языкам. Графическая форма записи является наиболее универсальной и осуществляется в виде блок-схем, когда с помощью специальных значков-блоков и соединяющих их линий задаются действия и их последовательность. Блочные символы имеют различные графические изображения в зависимости от выполняемых ими действий. Внутри символов словами или с помощью формул записываются действия, составляющие содержание этапов алгоритма. Преимуществами этой формы записи являются структурированность, наглядность и оторванность от национальных языков, а недостатками невозможность раскрытия структур данных и сложность построения схем методами структурного программирования. На алгоритмическом языке. Эта форма записи является конечной при непосредственном описании алгоритма в ЭВМ. Для описания алгоритма выбирается наиболее подходящий, с точки зрения полноты его реализации, язык программирования. Для вычислительных задач наиболее подходящим является язык программирования Фортран, для экономических Кобол, Алгол, для логических Лисп и т.д.
  7. Для реализации графической записи алгоритма в виде блок-схем существует достаточно большое количество элементарных условных блоков-рисунков, отражающих различные стороны алгоритмических процессов и практической их реализации. Однако, для большинства случаев достаточно несколько элементарных блоков. 1) Начало алгоритма. Отражает момент &amp;quot;старта&amp;quot; алгоритма, начало его практического исполнения. Во многих алгоритмических языках отсутствует его реализация. Так, например, в языке Basic такого оператора нет, зато есть команда RUN, которая отвечает за начало исполнения программы. 2) Ввод данных. Мы будем его использовать только для ввода данных при помощи клавиатуры. 4) операция вывода данных. В дальнейшем будет рассматриваться только как операция вывода данных на экран дисплея. 3) вычислительный процесс. В обобщенном смысле - все действия: ввод и вывод данных, проверка условий, организация - цикла могут рассматриваться как процесс. Дискретность алгоритма позволяет дробить алгоритм на отдельные мелкие шаги, позволяет и сливать эти шаги в один укрупненный шаг, так что нам в дальнейшем придется рассматривать процесс как элементарное действие (одну или несколько вычислительных операций), а также как типовой агрегат из нескольких элементарных операций. Такие агрегаты будут подробно рассмотрены в дальнейшем. 5) принятие решения, развилка. Принятие одного из двух возможных путей дальнейшего осуществления алгоритмического процесса. Некоторое логическое выражение (чаще всего равенство или неравенство или их совокупность) проверяется на справедливость. Все обозначенные буквами переменные должны получить к моменту проверки числовые значения.
  8. 6) Модификатор, заголовок цикла с заранее известным количеством повторений. Переменная цикла а первоначально в заголовке цикла получает значение х при соблюдении некоторых условий. Если условия выполняются, то выполняется процесс &amp;quot;2&amp;quot;, после чего переменная цикла получает приращение z (шаг), и процесс &amp;quot;2&amp;quot; может выполнятся еще раз. Повторения будут осуществляться пока a&amp;lt;y. При a&amp;gt;y цикл заканчивается и будет выполняться процесс &amp;quot;4&amp;quot;.&amp;quot;3&amp;quot;- последний оператор цикла. Условия &amp;quot;старта&amp;quot; цикла и его продолжения будут рассмотрены в дальнейшем. 7)- окончание алгоритма. В большинстве алгоритмических языков выражается оператором END, действия по программе прекращается, управление передается либо управляющей программе (&amp;quot;оболочке&amp;quot;), либо операционной системе. Комбинациями из этих изобразительных средств могут быть зафиксированы алгоритмы большого количества вычислительных задач, технических и технологических процессов. Блок-схемы вычислительных процессов легко могут быть практически реализованы в виде алгоритмов на различных языках программирования. В такой практической реализации часто пользуются некоторыми стандартными алгоритмическими конструкциями.
  9. Теория структурного программирования доказывает, что алгоритм любой степени сложности можно построить с помощью основного базового набора структур: 1) последовательная (линейная) структура; 2) ветвящаяся структура; 3) циклическая структура.
  10. Линейным называется алгоритм (фрагмент алгоритма), в котором отдельные предписания выполняются в естественном порядке (в порядке записи) независимо от значений исходных данных и промежуточных результатов. Основными его элементами, можно считать следующие: 1) начало, конец; 2) список данных; 3) ввод, вывод; 4) вычислительные операции, реализуемые оператором присваивания.
  11. Для более сложных задач используются ветвящиеся структуры (рис. 3, 4), т.е. такие, в которых в зависимости от исходных данных или промежуточных результатов алгоритм реализуется по одному из нескольких, заранее предусмотренных (возможных) направлений. Такие направления часто называются ветвями. Каждая ветвь может быть любой степени сложности, а может вообще не содержать предписаний, т.е. быть вырожденной. Выбор той или иной ветви осуществляется в зависимости от результата проверки условия с конкретными данными. В каждом случае алгоритм реализуется только по одной ветви, а выполнение других исключается. Реализация на ЭВМ линейных и разветвляющихся программ не дает большого выигрыша во времени по сравнению, например, с использованием простого калькулятора. Настоящее преимущество вычислительной машины становится очевидным лишь при решении тех задач, где возникает необходимость многократного повторения одних и тех же фрагментов алгоритмов.
  12. В циклических алгоритмах выполнение некоторых операторов (групп операторов) осуществляется многократно с одними и теми же или модифицированными данными. Циклические алгоритмы часто называют циклами. В зависимости от способа организации числа повторений различают три типа циклов: 1) цикл с заданным условием продолжения работы (ЦИКЛ - ПОКА); 2) цикл с заданным условием окончания работы (ЦИКЛ - ДО); 3) цикл с заданным условием повторений работы (ЦИКЛ С ПАРАМЕТРОМ). Структура цикла с заданным условием продолжения работы (ЦИКЛ - ПОКА) представлена на рис. 5. Тело цикла может включать в себя группу операторов любой степени сложности. При выполнении условия продолжения работы выполняется тело цикла, если же условие не выполняется, то работа циклической структуры заканчивается и начинается выполнение следующей структуры. Структура ЦИКЛ - ПОКА предусматривает вариант, когда тело цикла не выполняется ни разу. Такое возможно, если условие, стоящее в начале цикла, сразу же не выполняется. Когда на практике возникает необходимость использовать структуру, у которой тело цикла выполняется хотя бы один раз, то в этом случае применяется структура цикла, приведенная на рис. 6. С помощью такой структуры обычно составляют алгоритмы итерационных вычислительных процессов, т.е. таких, в которых для определения последующего значения переменной используется ее предыдущее значение. Выход из конструкции ЦИКЛ - ДО осуществляется по достижении параметром требуемого значения. В практических инженерных задачах обычно известны начальные значения изменяемых величин, закон изменения и конечное число повторений. Переменная, изменение которой организуется в ходе реализации цикла, называется параметром цикла или управляющей переменной. Алгоритм работы цикла с заданным числом повторений представляет собой соединение линейной структуры (начало цикла), структуры ЦИКЛА - ПОКА (условие в нем заменено на противоположное) и снова линейной (последовательной) структуры в теле цикла. Таким образом, с помощью базового набора структур можно построить алгоритм любой степени сложности.
  13. На сегодняшний день самой популярной методикой программирования является структурное программирование &amp;quot;сверху - вниз&amp;quot;. Эта технология программирования представляет собой процесс пошагово разбиения алгоритма на все более мелкие части с целью получить такие элементы, для которых можно легко написать конкретные предписания. Структурная алгоритмизация основывается на двух принципах: 1) последовательная детализация &amp;quot;сверху - вниз&amp;quot;; 2) ограниченность базового набора структур для построения алгоритмов любой степени сложности. Из принципов вытекают требования структурного программирования: 1) программа должна составляться мелкими шагами; таким образом, сложная задача разбивается на достаточно простые, легко воспринимаемые части; 2) логика программы должна опираться на минимальное число достаточно простых базовых управляющих структур. Можно перечислить основные достоинства структурного программирования: 1) возможность преодоления барьера сложности программ; 2) возможность демонстрации правильности программ на различных этапах решения задачи; 3) наглядность программ; 4) простота модификации (внесение изменений) программ;
  14. Инструментальные программные средства (software tools) - совокупность программ, которые используются в процессе разработки прикладных программ. Даже при наличии десятков тысяч программ для ЭВМ пользователям может потребоваться что-то такое, чего не делают (или делают, но не так) имеющиеся программы. В этих случаях используют языки программирования.
  15. Язык программирования - это система обозначений, служащая для точного описания программ или алгоритмов для ЭВМ. Языки программирования являются искусственными языками, в которых синтаксис и семантика строго определены. Поэтому они не допускают свободного толкования выражений, характерного для естественного языка. Основные требования, предъявляемые к языкам программирования: наглядность - использование в языке по возможности уже существующих символов, хорошо известных и понятных как программистам, так и пользователям ЭВМ; единство - использование одних и тех же символов для обозначения одних и тех же или родственных понятий в разных частях алгоритма. Количество этих символов должно быть по возможности минимальным; гибкость - возможность относительно удобного, несложного описания распространенных приемов математических вычислений с помощью имеющегося в языке ограниченного набора изобразительных средств; модульность - возможность описания сложных алгоритмов в виде совокупности простых модулей, которые могут быть составлены отдельно и использованы в различных сложных алгоритмах; однозначность - недвусмысленность записи любого алгоритма. Отсутствие ее могло бы привести к неправильным ответам при решении задач.
  16. Простейшей конструкцией языка программирования является оператор. А сама программа является совокупностью операторов, последовательно описывающих реализацию конкретного алгоритма. Различают языки программирования низкого и высокого уровня. Первыми языками общения человека с ЭВМ были машинные языки которые относятся к языкам низкого уровня. Машинный язык представляет собой последовательность команд, записанных в двоичных кодах. Каждое слово машинного языка управляет тем или иным действием ЭВМ - арифметическими, логическими и вспомогательными операциями машины, перемещением, записью, воспроизведением информации и т.д. Языки этого вида позволяют наиболее полно использовать аппаратные возможности ЭВМ. Самым большим недостатком машинного языка является огромная трудоемкость программирования и отладки из-за отсутствия средств автоматизации этих процессов. Кроме того, трудности для программиста сильно возрастают из-за отсутствия наглядности машинного языка. И наконец, при составлении программы на машинном языке человек должен подробно представлять себе все детали структуры и работы ЭВМ. Языки программирования высокого уровня позволяют кратко (лаконично) и вместе с тем емко определять задания для вычислительной машины в терминах, соответствующих некоторой области применения и близких к разговорному языку. Для популярных языков программирования существует множество систем программирования. Наибольшее распространение получили такие системы, которые легки в использовании, позволяют получать эффективные программы, имеют богатые библиотеки подпрограмм и мощные возможности для отладки программ. В качестве примеров таких программ можно назвать Turbo C++, Turbo Pascal, Microsoft C, Microsoft Basic.
  17. Фортран [FORTRAN — FORmula TRANslation] — язык программирования высокого уровня, разработанный фирмой IBM в 1956 г. для описания алгоритмов решения вычислительных задач. Относится к категории процедурно-ориентированных языков. Наиболее распространенными версиями этого языка являются Фортран IV, Фортран 77 и Фортран 90. Используется на всех классах ЭВМ. Последняя его версия также применяется на ЭВМ с параллельной архитектурой.
  18. Бейсик [BASIC — Beginner&amp;apos;s All-purpose Symbolic Instruction Code] — язык программирования высокого уровня разработан в 1963-1964 гг. в Дартмутском колледже Томасом Куртом и Джоном Кемени. Первоначально предназначался для обучения программированию. Отличается простотой, легко усваивается начинающими программистами благодаря наличию упрощенных конструкций языка Фортран и встроенных математических функций, алгоритмов и операторов. Существует множество различных версий Бейсика, которые не полностью совместимы друг с другом. Некоторые реализации Бейсика включают средства обработки данных и наборов данных. Большинство версий Бейсика использует интерпретатор, который преобразует его компоненты в машинный код и позволяет запускать программы без промежуточной трансляции. Некоторые более совершенные версии Бейсика позволяют использовать для этой цели трансляторы. На IBM PC широко используются Quick Basic фирмы Microsoft, Turbo Basic фирмы Borland и Power Basic (усовершенствованная версия Turbo Basic, распространяемая фирмой Spectra Publishing).
  19. Паскаль [PASCAL] — процедурно-ориентированный язык программирования высокого уровня, разработанный в конце 60-х гг. Никлаусом Виртом первоначально для обучения программированию в университетах. Назван в честь французского математика XVII века Блеза Паскаля. В своей начальной версии Паскаль имел довольно ограниченные возможности, поскольку предназначался для учебных целей, однако последующие доработки позволили сделать его хорошим универсальным языком, широко используемым в том числе для написания больших и сложных программ. Существует ряд систем программирования на этом языке для разных типов ЭВМ. Для IBM PC наиболее популярной является система Turbo Pascal фирмы Borland (США).
  20. Новую жизнь языку Pascal дал Филипп Кан (Kahn, Philippe; р. 1938) – создатель компилятора Turbo Pascal для IBM PC и основатель компании Borland (1984 г.)
  21. [С] — многоцелевой язык программирования высокого уровня, разработанный Денисом Ритчи в начале 70-х гг. на базе языка BCPL. Используется на миниЭВМ и ПЭВМ. Является базовым языком операционной системы Unix, однако применяется и вне этой системы для написания быстродействующих и эффективных программных продуктов, включая и операционные системы. Для IBM PC имеется ряд популярных версий языка Си, в том числе Turbo С (фирмы Borland), Microsoft С и Quick С (фирмы Microsoft), а также Zortech С (фирмы Symantec). Многие из указанных версий обеспечивают также работу с Си и Си++ (см. ниже). Си++ [C++] — язык программирования высокого уровня, созданный Бьярном Страустрапом на базе языка Си. Является его расширенной версией, реализующей принципы объектно-ориентированного программирования. Используется для создания сложных программ. Для IBM PC наиболее популярной является система Turbo C++ фирмы Borland (США).
  22. Бьярн Страуструп (Stroustrup, Bjarne; р. 1950) ввел в язык С объекты и превратил его в С++
  23. Java — объектно-ориентированный язык интерпретирующего типа (см. &amp;quot;Интерпретатор&amp;quot;), разработанный фирмой Sun Microsystems в 1994 г., во многом сходный с языком C++. Он нашел широкое применение для написания разного рода программных продуктов (&amp;quot;приложений&amp;quot;), ориентированных на работу в сетевых системах типа &amp;quot;клиент-сервер&amp;quot; под управлением современных операционных систем (Windows, OS/2 и др.), Рассчитан на передачу по Internet текстов программ, которые на всех компьютерах должны выполняться одинаковым образом. Основное достоинство, привлекшее к этому языку специалистов, заключается в предоставляемой им возможности разработки платформо-независимых программ Считается, что своим успехом этот язык обязан, в первую очередь, фирме Netscape Communication, которая лицензировала его интерпретатор в свой самый популярный в мире броузер Web-страниц (Navigator 2.0). Общими характеристиками языка Java являются его простота, значительный объем библиотеки подпрограмм, возможность распространения на любой тип ЭВМ, независимость от ее архитектуры, высокая защищенность создаваемых программ, динамичность языка, обеспечивающая гибкое введение изменений в программы и др. В настоящее время язык Java лицензировали такие фирмы, как IBM, Microsoft. Borland, Symantec, Micromedia и др. [102, 105].
  24. Лисп [LISP — LISt Processing] — алгоритмический язык, разработанный в 1960 г. Дж. Маккарти и предназначенный для манипулирования перечнями элементов данных. Используется преимущественно в университетских лабораториях США для решения задач, связанных с искусственным интеллектом. В Европе для работ по искусственному интеллекту предпочитают использовать Пролог.
  25. Пролог [PROLOG — PROgramming in LOGic] — язык программирования высокого уровня декларативного типа (см, выше &amp;quot;Декларативное программирование&amp;quot;), предназначенный для разработки систем и программ искусственного интеллекта. Относится к категории языков пятого поколения. Был разработан в 1971 г. в университете г. Марсель (Франция).
  26. Проект ЭВМ V поколения – японский вызов мировой компьютерной индустрии, брошенный в начале 1980-х годов. В качестве основного языка ЭВМ V поколения предполагалось использовать Prolog
  27. Ада [Ada] — язык программирования высокого уровня, ориентированный на применение в системах реального времени и предназначенный для автоматизации задач управления процессами и/или устройствами, например, в бортовых (корабельных, авиационных и др.) ЭВМ. Разработан по инициативе министерства обороны США в 80-х гг. Назван в честь английского математика, автора идеи программного управления Ады Августы Байрон (Лавлейс), жившей в 1815-1851 гг. DBASE. Язык программирования высокого уровня, предназначенный для создания пакетов прикладных программ, связанных с манипулированием большими объемами данных (Xbase), Первая версия языка dBASE II вышла в свет в начале 80-х гг., в августе 1994 г. была выпущена версия dBASE 5.0 для Windows. FoxPro — объектно-ориентированный язык, предназначенный для создания пакетов прикладных программ, в том числе для современных операционных систем, например, версия этого языка FoxPro for Windows. Об одн6&amp;apos;й из последних версий этого языка — Visual FoxPro 3.0 фирмы Microsoft см. в [84]. SQL (Structured Query Language) — &amp;quot;язык структурированных запросов&amp;quot; — предназначен для обеспечения доступа к реляционным базам данных (см. &amp;quot;Реляционная модель&amp;quot;). Создан корпорацией IBM. Большинство файловых серверов многие СУБД используют SQL в качестве стандартного средства доступа к дан-ым из приложений-клиентов. PostScript — объектно-ориентированный язык, разработанный фирмой Adobe Systems (США). Является одним из основных стандартов для печати и передачи документов, работает с изображениями, включая шрифты. Поэтому относится также к классу специализированных языков описания страниц. Представляет собой набор команд по формированию сложных геометрических фигур из набора простейших заготовок (круги, прямоугольники, прямые и кривые линии и тд.) шрифты и чертежи, выполненные с использованием векторной графики языка PostScript, могут масштабироваться без потери качества их печати или отображения на экране монитора. Используется для управления лазерными принтерами ри печати документов и другими устройствами вывода данных. VRML (Virtual Reality Modelling Language) — &amp;quot;язык моделирования виртуальной реальности&amp;quot; (сленговый термин — &amp;quot;вермел&amp;quot;), предназначенный для унификации и упрощения представления трехмерной и подвижной графики, в том числе синхронизации изображения и звука. Идея создания языка возникла в 1994 г. В Женеве на международной конференции по WWW. Главной задачей было дальнейшee усовершенствование интерактивных интерфейсов с целью лучшего их восприятия человеком. VRML рассматривается разработчиками как язык, хотя и родственный, но альтернативный по отношению к HTML и взаимодействующий с ним. Выпущена первая версия спецификации VRML [141]. Подробности можно получить по сетевому адресу: &amp;lt;http:/www.oki.com/VMRL_FAQ.html&amp;gt;. Occam — язык высокого уровня, предназначенный для выполнения параллельного программирования и создания транспьютеров. Является результатом совместной разработки фирмы INMOS (Великобритания) и Оксфордского университета (Дэвид Мэй). Концепция Occam базируется на теории связанных последовательных процессов, созданной профессором Оксфордского университета С. Хора Свое название язык получил в честь английского философа XIV века Уильяма Оккама, поскольку в основе разработки языка был использован провозглашенный им принцип: &amp;quot;Сущность не должна превышать необходимость&amp;quot; (&amp;quot;бритва Оккама&amp;quot;). В соответствии с упомянутым принципом из двух одинаково эффективных вариантов решений принимается наиболее простое. Язык Occam используется в транспьютерах первых и всех последующих выпусков [170, 172],
  28. Классификация и специализация языков программирования: - для программирования научно-технических задач - Фортран, Алгол; - для решения задач обработки данных, главным образом в экономике, -Кобол; - для обучения программированию - Паскаль и Бейсик; - для решения перспективных задач искусственного интеллекта - Пролог и Лисп; - для решения как научно-технических, так и экономических задач - многоцелевые универсальные языки ПЛ-1, Алгол-68, Ада. Другую группу составляют машинно-ориентированные языки, которые по своей структуре приспособлены для решения задач на конкретных ЭВМ или группах ЭВМ со сходными характеристиками. Наиболее распространенным языком этого типа является Ассемблер.
  29. Программа, составленная на алгоритмическом языке высокого уровня, не может быть непосредственно выполнена ЭВМ, так как ЭВМ умеет выполнять только последовательность элементарных операций, заданных в машинных кодах. Перевод программы с алгоритмического языка на машинный осуществляется ЭВМ с помощью специальной программы, которая называется транслятор. В программе - трансляторе &amp;quot;заложены&amp;quot; все правила алгоритмического языка и способы преобразования различных его конструкций на машинный язык. В процессе трансляции текст программы проверяется на ошибки. Существуют два типа трансляторов: компиляторы и интерпретаторы. Интерпретатор анализирует исходный текст программы и последовательно транслирует ее на машинный язык по частям (отдельным командам и операторам ) и непосредственно следует выполнение их ЭВМ. Такая стратегия увеличивает время работы. Однако интерпретатор обладает очень важным качеством- это удобство отладки программ, благодаря которому он получил широкое распространение. Компилятор производит перевод всей программы в машинные коды с сохранением их в виде объектного модуля. Эти объектные модули могут быть использованы программами написанными на других языках программирования. Программа в таком виде еще не может быть выполнена. Для создания исполняемого модуля необходимо с помощью редактора связей подключить к объектному модулю библиотеки стандартных функций. После этого программу можно запускать на выполнение. Разницу между компиляцией и интерпретацией можно пояснить с помощью аналогии. Фармацевты в аптеке приготовляют микстуру по старинному рецепту, написанному на латыни. Есть два пути: можно сначала перевести (скомпилировать) рецепт на родной язык и лишь затем готовить лекарство на родном языке. А можно, по мере чтения перевода рецепта, сразу готовить лекарство, но не записывать сам текст перевода (т.е. только интерпретировать). В последнем случае мы не получим текста рецепта на родном языке, а сразу получим микстуру, правда, если лекарство нужно готовить несколько раз, рецепт придется переводить многократно.
  30. Этапы разработки прикладных программ Процесс разработки прикладной программы происходит поэтапно. Существуют различные способы разделения этого процесса на этапы, однако обязательными считаются следующие: определение требований к задаче (постановка задачи и построение модели); проектирование (построение алгоритма решения); программирование; компоновка; тестирование; документирование.   5.3.1. Постановка задачи и построение модели  Требования к программному обеспечению можно достаточно условно разделить на две группы. Это, с одной стороны, требования &amp;quot;заказчика&amp;quot;, знакомого с практическими приложениями создаваемого программного продукта и конкретных условий его эксплуатации. С другой стороны - практические возможности реализации этих требований в виде программного продукта. В процессе формирования требований &amp;quot;заказчика&amp;quot; практически всегда наблюдается много субъективных моментов (даже в том случае, когда &amp;quot;заказчик&amp;quot; и &amp;quot;исполнитель&amp;quot; - одно и то же лицо). Одним из наиболее &amp;quot;тяжелых&amp;quot; в исполнении требований является следующее: &amp;quot;Создать самую лучшую из всех подобных программ&amp;quot;. &amp;quot;Исполнитель&amp;quot; должен учитывать следующее: требования должны вырабатываться на основе разумных компромиссов между &amp;quot;заказчиком&amp;quot; и &amp;quot;исполнителем&amp;quot;; в течение всего времени создания программного продукта за выработку требований к нему должен отвечать один (и только один) человек; создаваемый программный продукт заранее делается легко модифицируемым, так как требования к нему будут постоянно меняться, поскольку существует вероятность, что в течение всего срока эксплуатации программного продукта его необходимо будет дорабатывать либо ввиду изменения условий эксплуатации, либо из-за обнаружившихся ошибок при реализации; требования к программному продукту и изменения в них должны документироваться. Определение требований к программному продукту является важнейшим этапом его проектирования и разработки. На этом этапе определяется характер, состав и организация исходных данных и искомых результатов, с помощью формул (или любым другим методом) описываются связи между ними. Таким образом, на первом этапе задача требует формализации, т.е. построения модели некоторого объекта, процесса или явления. Важно понять, что здесь закладывается фундамент всей конструкции, влияющий на все остальные этапы. Познание природы человеком приводит к искусственному делению на составные части явлений, с которыми он сталкивается. Предметы внешнего мира становятся объектами познания, поскольку они вовлекаются в орбиту человеческой деятельности и подвергаются активному воздействию со стороны человека, благодаря чему и обнаруживаются их свойства. При этом научное познание пользуется такими методами, как моделирование, создание гипотез и теорий. На уровне научного познания всегда сказывались два фактора: уровень развития теоретических представлений, степень зрелости знаний об изучаемом объекте и возможность описать его наиболее существенные черты и свойства на языке математических понятий и уравнений или, как принято говорить, возможность построить математическую модель изучаемого объекта. При необходимости решить какую-либо задачу мы прежде всего сталкиваемся с вопросом: &amp;quot;С чего начать?&amp;quot; Прежде всего нужно разобраться, что в изучаемом объекте или явлении существенно для данной задачи, а чем можно и пренебречь. При этом существенные свойства объекта необходимо сформулировать так, чтобы их можно было записать на языке математических понятий (формул, уравнений, неравенств и т.д.). Выполнив такой &amp;quot;перевод&amp;quot; на язык математики, мы получим то, что называется математической моделью. Математическая модель, основанная на некотором упрощении и идеализации, не тождественна реальному объекту, а является его приближенным описанием. Однако, благодаря замене реального объекта соответствующей ему моделью появляется возможность сформулировать задачу его изучения как математическую и воспользоваться для анализа универсальным математическим аппаратом, который не зависит от природы объекта. Математика позволяет единообразно описать широкий круг фактов и наблюдений, провести их детальный количественный анализ, предсказать, как поведет себя объект в различных условиях, т.е. спрогнозировать результаты будущих наблюдений. В основе создания любой модели лежит использование аналогий и гипотез. Гипотеза есть некоторое предположение, еще не доказанное ни теоретически, ни экспериментально. Только в ходе теоретической и экспериментальной проверки гипотеза постепенно превращается в теорию, которую можно использовать для объяснения наблюдаемых явлений и процессов. Аналогией называют определенное сходство (или подобие) различных предметов и явлений. В известных границах, аналогия может служить средством познания не раскрытых еще признаков и свойств исследуемых объектов и процессов. Однако, делая выводы или умозаключения на основе аналогии, нужно отчетливо представлять, что эти выводы не абсолютно достоверны и истинны, а носят лишь более или менее вероятностный характер, и поэтому всегда нуждаются в дополнительной проверке. Любая модель содержит лишь в большей или меньшей степени информацию о фактическом состоянии и процессах оригинала (объекта моделирования). Таким образом, математическая модель есть приближенное описание какого-либо класса явлений внешнего мира, выражаемое с помощью математической символики. Математические модели представляют собой систему зависимостей, в которых постоянные и переменные величины взаимодействуют точно таким образом или с заданным приближением, как и элементы и параметры реальной системы. Математические модели - мощный метод познания внешнего мира, а также прогнозирования и управления. Анализ математических моделей позволяет проникнуть в сущность изучаемых явлений. Изучение явлений с помощью таких моделей можно подразделить на несколько этапов. 1. Формулирование законов, связывающих основные объекты модели. Этот этап требует широкого знания фактов, относящихся к изучаемым явлениям, и глубокого проникновения в их взаимосвязи. Эта стадия завершается записью в математических терминах сформулированных качественных представлений о связях между объектами модели. 2. Исследование математических задач, к которым приводят математические модели. Основным вопросом здесь является решение прямой задачи, т.е. получение в результате анализа модели выходных данных (теоретических следствий) для дальнейшего их сопоставления с результатами наблюдений изучаемых явлений. На этом этапе важную роль приобретает математический аппарат, необходимый для анализа модели, и вычислительная техника - средство для получения количественной выходной информации как результата решения сложных математических задач. Часто математические задачи, возникающие на основе различных моделей явлений, бывают одинаковыми (например, основная задача линейного программирования отражает ситуации различной природы). Это дает основание рассматривать такие типичные математические задачи как самостоятельный объект, абстрагируясь от изучаемых явлений. 3.Выяснение того, удовлетворяет ли принятая модель критерию практики, т.е. согласуются ли результаты наблюдения с теоретическими следствиями модели в пределах точности наблюдений. Если все параметры ее были заданы, то определение отклонений теоретических следствий от наблюдений дает решение прямой задачи с последующей оценкой отклонений. Применение критерия практики к оценке математической модели позволяет делать вывод о правильности положений, лежащих в основе подлежащей изучению (гипотетической) модели. Этот метод является единственным методом изучения недоступных нам непосредственно явлений макро- и микромира. 4. Математическая модель не определяется исследуемым объектом однозначно, а выбор той или иной модели зависит от точности, с которой мы хотим получить результат. Для повышения точности существующую модель часто приходится усложнять, учитывая все новые и новые особенности изучаемого объекта. В процессе развития науки и техники данные об изучаемых явлениях все более и более уточняются и наступает момент, когда выводы, получаемые на основании принятой модели, не соответствуют нашим знаниям о явлении. Таким образом, возникает необходимость построения новой, более совершенной модели. Сложность построения и исследования математической модели существенно зависит от сложности изучаемого объекта. Так, например, математические методы давно и весьма успешно применяются в теоретической механике, физике, астрономии, т.е. в науках, в которых изучаются наиболее простые формы движения материи. Математика стала языком этих наук, относящихся к разряду &amp;quot;точных&amp;quot;. Значительную роль играет также математика в технике. Этим вплоть до недавнего времени исчерпывалась сфера широкого применения математических методов. Ситуация резко изменилась с появлением ЭВМ. Причина этого заключается в следующем. В математике часто встречаются задачи, решение которых не удается получить в виде формулы, связывающей искомые величины с заданными. Про такие задачи говорят, что они не решаются в явном виде. Для их решения стремятся найти какой-нибудь бесконечный процесс, сходящийся к искомому ответу. Если такой процесс указан, то, выполняя некоторое число шагов и затем обрывая вычисления (не продолжая их до бесконечности), мы получим приближенное решение задачи. Эта процедура связана с проведением вычислений по строго определенной системе правил (алгоритму), которая задается характером процесса. Наиболее просто вопрос о построении алгоритма решается в случае, когда хорошо известны законы, определяющие поведение и свойства объекта, и имеется большой практический опыт их применения. Тогда можно априори (до опыта, - до начала решения математической задачи) оценить точность результатов, которую обеспечивает рассматриваемая модель.
  31. 5.3.2. Построение алгоритма решения задачи  Поскольку реальные объекты и процессы в математических моделях записываются чаще всего с использованием стандартной математической символики и представляют собой формулы, уравнения и т.д., то после построения модели наступает следующий этап исследования - выбор метода решения сформулированной математической задачи и построение алгоритма решения. Следует иметь в виду, что в прикладных задачах нас, как правило, интересуют количественные значения искомых величин. Но числа, говоря вообще, не должны являться самоцелью. В конечном итоге целью любых расчетов является понимание исследуемого явления или процесса. Выбор метода решения задачи определяется классом, к которому принадлежит построенная модель (например, методы математического программирования, точные или приближенные методы решения уравнений различного вида и т.д.). Если готовых методов для решения поставленной задачи не существует, то их разрабатывают самостоятельно. Следует помнить, что все расчеты проводятся с числами, записанными в виде конечных десятичных дробей, поэтому результаты вычислений всегда носят приближенный характер и поэтому важно добиться того, чтобы при выбранном методе вычислений ошибки укладывались в рамки требуемой точности. Слова &amp;quot;приближенное решение&amp;quot; не следует воспринимать как &amp;quot;решение второго сорта&amp;quot;. Если для некоторой задачи существует точное (аналитическое) решение, то при вычислениях, из-за представления чисел конечными десятичными дробями все равно получится приближенное значение. Методов приближенных вычислений, например, использующих бесконечный сходящийся процесс, существует огромное количество, они охватывают вычисление функций (в т.ч. и &amp;quot;элементарных&amp;quot; sin(x) и соs(x)), решение различных уравнений и их систем и т.д. И здесь проблема не в приближенном характере ответа, а в большом объеме вычислений и определении момента остановки процесса при достижении необходимой точности. Широкое применение вычислительных алгоритмов стало возможным благодаря ЭВМ. До их появления численные методы использовались редко и только в сравнительно простых случаях в силу чрезвычайной трудоемкости вычислений вручную. Массовое внедрение и использование прикладных программ и построенных на их основе информационных систем предполагает, что к ним должны предъявляться, по сути дела, те же требования, что и к массовым изделиям промышленного производства. Исполнению этих требований могут служить следующие положения: при разработке вычислительных алгоритмов особенное внимание уделяется тому, чтобы они были удобны для машинного счета; опыт показывает, что гораздо выгоднее развивать универсальные алгоритмы для решения широкого класса типичных математических задач, чем строить частные алгоритмы для решения каждой задачи в отдельности; изучение объектов самой различной природы часто приводит к одним и тем же математическим задачам. Поэтому имеется благоприятная возможность выделить задачи, которые часто встречаются в приложениях, изучить их особенности, разработать эффективные алгоритмы и реализовать эти алгоритмы в виде стандартных программ для ЭВМ. В соответствии с поставленной задачей и методом ее решения описывается последовательность действий по реализации метода, т.е. по преобразованию исходных данных в искомые результаты. Иными словами, составляется алгоритм решения задачи. Понятие &amp;quot;алгоритм&amp;quot; занимает одно из центральных мест в жизнедеятельности человека. Так мы говорим об алгоритме перевода с одного языка на другой; об алгоритме работы железнодорожного диспетчера, перерабатывающего информацию о движении поездов в приказания, регулирующие это движение, и о многих других примерах алгоритмического описания процессов управления. Слово алгоритм происходит от латинской транскрипции имени родившегося в Хиве узбекского математика IX в. аль-Хорезми (Algorithmi). В средних веках в Европе алгоритмом называлась десятичная позиционная система счисления и искусство счета в ней, поскольку именно благодаря латинскому переводу (XII в.) трактата аль-Хорезми Европа познакомилась с этой системой, где, в частности, были сформулированы четкие правила выполнения четырех арифметических действий. Аль-Хорезми также составил сборник правил разрешения юридических казусов, возникавших при торговых сделках, разделе имущества и других операциях, при которых требовалось решить определенные математические задачи. Алгоритмы в науке встречаются на каждом шагу - умение решать задачу &amp;quot;в общем виде&amp;quot; всегда означает, по существу, владение некоторым алгоритмом. Говоря, например, об умении человека складывать числа, имеют в виду не то, что он для любых двух чисел рано или поздно сумеет найти их сумму, а то, что он владеет приемом сложения, применимым к любым двум числам, т.е., иными словами, алгоритмом сложения (примером такого алгоритма является известное правило сложения чисел столбиком). Детали алгоритма, оказывающие значительное влияние на его применимость, состоят в обеспечении скорости работы, экономии памяти, надежности, точности, простоты. Для некоторых задач существуют алгоритмы, которые всегда работают, а ситуации, для которых возможны неудачи, столь маловероятны, что их можно игнорировать. Однако многие математические задачи алгоритмически неразрешимы (т.е. не существует универсальных способов решения этих задач). Это означает, что для такого алгоритма найдется задача из той же предметной области, для которой он совершенно неприменим. Установление неразрешимости какой-либо алгоритмической проблемы, т.е. отсутствие единого алгоритма, позволяющего найти решения всех единичных проблем данной серии, является важным познавательным актом, показывающим, что для решения конкретных единичных проблем принципиально необходимы специфические для каждой такой проблемы методы. Существование неразрешимых алгоритмических проблем служит, таким образом, проявлением неисчерпаемости процесса познания. Установление &amp;quot;правил поведения&amp;quot; (алгоритмов) для различных сфер человеческой деятельности и доказательство их правильности является важной, сложной и не всегда выполнимой задачей. Прежде всего необходимо отметить, что &amp;quot;алгоритм&amp;quot; - это одно из основных понятий (категория), не обладающее формальным определением в рамках более простых понятий, а абстрагируемое непосредственно из опыта. Таким образом, можно говорить только о толковании понятия. Таких толкований существует достаточно много, каждое из которых по-своему отражает разные стороны этого понятия. Остановимся на следующем толковании: &amp;quot;алгоритм - точное формальное предписание, однозначно определяющее содержание и последовательность операций, переводящих заданную совокупность исходных данных в искомый результат&amp;quot;. Алгоритмический процесс - это последовательное преобразование некоторых объектов, происходящее дискретными &amp;quot;шагами&amp;quot;; каждый шаг состоит в смене одного объекта обработки другим. При применении, например, алгоритма вычитания столбиком к паре чисел (307 и 49) последовательно возникнут такие объекты: _ 307 _ 307 _ 307 _ 307 49 49 49 49 8 58 258 При этом в ряду сменяющих друг друга промежуточных объектов каждый последующий полностью определяется (в рамках данного алгоритма) непосредственно предшествующим. При строгом подходе предполагается также, что переход от каждого промежуточного объекта к непосредственно следующему достаточно &amp;quot;элементарен&amp;quot; - в том смысле, что происходящее за один шаг преобразование предыдущего конечного объекта в следующий носит локальный характер (преобразованию подвергается не весь объект, а лишь некоторая заранее ограниченная для данного алгоритма его часть, и само это преобразование определяется не всем предыдущим процессом, а лишь этой ограниченной частью). Таким образом, наряду с совокупностями возможных исходных данных и возможных результатов, для каждого алгоритма имеется еще совокупность &amp;quot;промежуточных результатов&amp;quot;, представляющая собой ту рабочую среду, в которой развивается алгоритмический процесс. Работа алгоритма начинается подготовительным шагом, на котором возможное исходное данное преобразуется в начальный член ряда сменяющих друг друга результатов; это преобразование происходит на основе специального, входящего в состав рассматриваемого алгоритма &amp;quot;правила начала&amp;quot;. Преобразования происходят до тех пор, пока некоторое испытание, которому подвергаются все промежуточные результаты по мере их возникновения, не покажет, что данный промежуточный результат является заключительным; это испытание производится на основе специального &amp;quot;правила окончания&amp;quot;. Если ни для какого из возникающих промежуточных результатов правило окончания не дает сигнала остановки, то либо к каждому из возникающих промежуточных результатов применимо правило непосредственной переработки, и алгоритмический процесс продолжается неограниченно, либо же к некоторому промежуточному результату правило непосредственной обработки оказывается неприменимым, и процесс оканчивается безрезультатно. Наконец, из заключительного промежуточного результата - также на основе специального правила - извлекается окончательный &amp;quot;результат&amp;quot;. Таким образом, для каждого алгоритма можно выделить семь характеризующих его параметров: правило начала; совокупность возможных исходных данных; правило непосредственной обработки; совокупность возможных результатов; совокупность промежуточных результатов; правило извлечения результата; правило окончания. Начало. Любой план, зафиксированный в виде документа или хранящийся в памяти человека, так и останется планом, пока он не будет приведен в действие. Программа, хранящаяся в памяти компьютера, так и останется нереализованной, пока ее кто-то или что-то не приведет в действие. Совокупность исходных данных. Любой процесс, протекающий в окружающем нас мире, невозможен без обмена материей, энергией, информацией. Ни один двигатель не будет работать без потребления горючего, воздуха, тепла... из окружающего его пространства. Компьютер, работающий по определенному алгоритму (программе), должен получить для переработки какие-либо исходные данные (в том числе и хранящиеся отдельно, но внутри компьютера). Процесс переработки. Этот компонент алгоритма, как и всякий процесс в окружающем нас мире, не может проходить со 100% КПД. Во-первых, неизбежно образуется некоторые &amp;quot;отходы производства&amp;quot;, во-вторых, практически отсутствуют процессы, протекающие в &amp;quot;одну стадию&amp;quot;, всегда возникают некоторые промежуточные продукты, &amp;quot;полуфабрикаты&amp;quot;. Например, при вычислении по формуле y = ax+b сначала будет вычислено &amp;quot;ненужное&amp;quot; произведение ах, а уже потом к этому промежуточному результату прибавится величина b и сформируется значение величины y. Совокупность результатов. Совокупность промежуточных результатов. Процесс переработки исходных данных оказывается тесно связанным с совокупностью всех образующихся в этом процессе результатов и неотъемлемой частью этой совокупности - промежуточными результатами. Умение так спланировать вычислительный процесс, чтобы промежуточные результаты были использованы максимальным образом, дает возможность поднять КПД всего процесса. Извлечение результата. Из всей совокупности результатов, образовавшейся в результате реализации некоторого алгоритма, необходимо правильно извлечь результат. Фактически, это завершающий этап деятельности любого вычислительного процесса. Необходимо отметить, что ввиду того, что существуют алгоритмы разветвленной структуры, совокупность извлекаемых результатов должна содержать информацию пути, по которому реализовался данный алгоритм. Окончание. Любой процесс не может длиться бесконечно долго. Результат всегда должен быть получен за конечное, пусть даже очень большое количество шагов. Из всего сказанного можно сделать следующий вывод: все упомянутые компоненты алгоритма необходимы, а отсутствие любого из них приводит к тому, что алгоритм как единое целое - разрушается. Основными свойствами алгоритма являются: Массовость - свойство алгоритма, позволяющее применить его к широкому кругу задач рассматриваемого типа, при любых наборах исходных данных, а не к какому-то отдельному варианту. Кроме того, массовость алгоритма предполагает возможность достаточно легкой его модификации для решения задач, близких к рассматриваемому типу. Дискретность алгоритма - свойство, означающее, что всякий процесс, определяемый алгоритмом, должен носить дискретный, прерывистый характер, представляющий собой последовательность выполняемых один за другим отдельных законченных шагов. Любой процесс может быть разбит на мельчайшие шаги (при необходимости), а также отдельные маленькие шаги могут быть &amp;quot;агрегатированы&amp;quot; в один - более крупный шаг. Определенность (детерминированность) алгоритма - свойство, заключающееся в том, что любое предписание алгоритма должно быть строго определено и не допускать неоднозначного толкования. На практике это свойство алгоритма приводит к тому, что на основании исходных данных в любой точке алгоритма абсолютно определенно можно восстановить все предыдущие его шаги, а также известен тот единственно возможный следующий шаг, который должен быть сделан. Результативность - свойство, заключающееся в том, что алгоритм всегда должен приводить к результату. Обеспечение этого качества должно приводить к тому, что если алгоритм может протекать по нескольким взаимоисключающим вариантам, то по его окончании всегда возможно определить, какой конкретно вариант осуществился. Конечность алгоритма - свойство, предполагающее обязательное достижение результата за конечное, пусть и очень большое число шагов. В алгоритме должны быть предусмотрены меры против &amp;quot;зацикливания&amp;quot; - случайного или преднамеренного перехода алгоритма в режим бесконечного повторения одних и тех же действий без возможности завершения процесса. Бесконечные математические методы, основанные на вычислении сумм бесконечного количества слагаемых, и им подобные, а также операции с предельными переходами должны быть сведены к конечным (в том числе приближенным). Формальность алгоритма - свойство, позволяющее любому исполнителю, способному воспринимать и выполнять указания алгоритма, правильно выполнить весь алгоритм. Например, ЭВМ способна решить конкретную задачу по заданному алгоритму (программе), хотя, безусловно, сути задачи не понимает. Обратите внимание на то, что алгоритм должен содержать только те операции, которые исполнитель способен воспринимать и выполнять. (Например, делить на ноль не умеет никто, в том числе и ЭВМ). При решении большинства задач не удается одновременно разрабатывать и описывать алгоритм на языке программирования (алгоритмическом языке), понятном ЭВМ. Поэтому алгоритм предварительно должен быть записан одним из способов, облегчающих его перевод на машинный язык. Традиционно сложились следующие способы записи алгоритмов: словесная, словесно-формульная, в виде блок-схем и многие другие. Для записи алгоритма можно воспользоваться средствами обычного языка. Это наиболее популярный способ. Он может применяться как на &amp;quot;бытовом&amp;quot; уровне общения, так и при описании сложных технологий в науке, промышленности, экономике и других отраслях человеческой деятельности. Словесное описание не ограничивается каким-либо определенным набором слов или языком. Человек любой национальности может описать алгоритм на своем языке. Необходимо только сконструировать это описание так, чтобы оно удовлетворяло всем требованиям, предъявляемым к алгоритму: определенности, массовости, дискретности и результативности. Естественно, что такое описание должно содержать минимум слов, быть удобным для чтения и не должно быть косноязычным. Однако словесное описание алгоритма на любом естественном языке обладает обычно такими недостатками, как возможность неоднозначного понимания предписаний и утверждений; громоздкость, связанная с избыточностью разговорных языков (наличие в предложениях слов, без которых можно обойтись); отсутствие наглядности логических связей между частями алгоритма, неточность определений. Формульно-словесный способ записи алгоритмов применяется при описании различных математических методов. Он основан на использовании математических символов и выражений в сочетании со словесными пояснениями. Наиболее широко используется графическое описание алгоритма в виде блок-схемы, при котором различные этапы процесса обработки информации изображаются в виде геометрических фигур (или, как их еще называют, блоков или блочных символов). Связи между этапами и последовательность их выполнения указываются линиями, соединяющими блоки. Блочные символы имеют различные графические изображения в зависимости от выполняемых ими действий. Внутри символов словами или с помощью формул записываются действия, составляющие содержание этапов алгоритма. Алгоритм, представленный в виде блок-схемы, можно реализовать на ЭВМ в виде программы на любом языке программирования. К недостаткам метода относят невозможность раскрытия структур данных, а также несоответствие построенных схем методам структурного программирования. Эффективным заменителем блок-схем являются специализированные языки описания алгоритмов, объединенные под общим названием PDL (Program Design Language). Они имеют систему обозначений, сходную с языками программирования высокого уровня, однако, для них не нужен компилятор, чтобы превратить текст в рабочую программу. Языки типа PDL обладают эффективными средствами создания комментариев для описываемых в алгоритме действий. Алгоритмизация - общая совокупность действий, необходимых для построения алгоритма решения задачи. Сущность алгоритмизации заключается в выделении самостоятельных этапов вычислительного процесса, формальной записи содержания каждого из них, назначения порядка выполнения, проверке действительности (правильности) выбранного алгоритма по реализации заданного метода вычислений или обработке данных. Результаты алгоритмизации систематизируются (формализуются) в виде определенной, задающей алгоритм решения задачи вычислительной схемы, представляющей собой некоторую последовательность операций (шагов) и форму записи результатов этих операций. Для построения алгоритма процесс расчленяется на элементарные шаги (модули), применительно к которым может быть дано математическое описание исходя из известных математических схем. Соотношения, описывающие элементарные процессы, объединяются в систему, дополняются описанием взаимосвязей между модулями и представляются в виде алгоритма. Набор первичных конструкций, из которых можно построить модуль любой сложности состоит из ограниченного числа объектов. Наиболее важные из них приведены на рис. 10. Эти конструкции характеризуются тем, что имеют только один вход и только один выход и для каждого исполнимого участка существует путь от входа до выхода, проходящий через этот участок. Алгоритмы, все операторы которых выполняются однократно и последовательно один за другим, называются прямыми, или линейными, алгоритмами. Такие алгоритмы строятся из первичных конструкций типа &amp;quot;последовательность&amp;quot;. Это наиболее простые алгоритмы, их выполнение не связано ни с какими дополнительными условиями, кото   1. Блок 1 Блок 2 последовательность   Блок 1 2. условиеусловие Блок 2   Блок 3а. условие предусловие   3б. Блок условие постусловие   Рис.10. Основные алгоритмические конструкции   рые могли бы изменить ход вычислений. В те времена, когда устройства управления (центральные процессоры ЭВМ) были относительно примитивны, программа, построенная по такому алгоритму, требовала большого объема памяти, но выполнялась относительно быстро, что было связано с отсутствием устанавливаемых и проверяемых счетчиков. Таким образом, здесь проявлялось своеобразное правило &amp;quot;рычага&amp;quot;: проигрываем в компактности - выигрываем в скорости. С тех пор как эти функции были реализованы в устройстве управления при помощи индексных регистров и соответствующих команд, указанная экономия времени потеряла значение. Процедура линеаризации тем не менее имеет смысл в упрощенных ЭВМ и, особенно, в маломощных мини-ЭВМ. Существенными недостатками линейных алгоритмов, кроме громоздкости, являются их неустойчивость и трудности модификации. Примером алгоритма последовательного выполнения может служить вычисление y=ax2+bx+c, при известных величинах a,b,c и некоторого произвольного x. Здесь совокупность исходных данных представлена константами a,b,c и переменной величиной x. В процессе переработки исходных данных последовательно будет образовываться совокупность промежуточных значений х2, ах2, bx и т.д., из которых формируется результат (y). Выходными значениями назначим x и y. Алгоритм разбит на элементарные шаги, дальнейшее его дробление, очевидно, нецелесообразно (т.е не создаются описания отдельных этапов вычислений - как умножить два числа, как возвести в квадрат и т.д.). Результат достигается за конечное число шагов и предъявляется пользователю. Линейная схема алгоритма не допускает двоякого толкования действий. Алгоритм может быть реализован на одном из языков программирования. Алгоритм носит ограниченно-массовый характер (допускает вычисления при любом х, но при фиксированных a,b,c). Понятие &amp;quot;массовости&amp;quot; алгоритма предусматривает не только работу алгоритма при широком круге исходных данных, но и возможность его модификации для решения другой, достаточно близкой задачи. Применение этого алгоритма для вычисления значений функции y=ax2+bx-1+с невозможно. Формальная замена функции без предварительного контроля входных данных приведет к тому, что при х=0 произойдет &amp;quot;вычислительная катастрофа&amp;quot;. Деление на ноль (а также вычисление х; lg x при х&amp;lt;0) - не выполнимая ни для человека, ни для ЭВМ операция. Опасность состоит в том, что очень часто при анализе результатов таких операций на экран выдается сообщение о характере невыполнимой операции, а программа продолжает работу, присваивая результату некоторое &amp;quot;стандартное значение&amp;quot; (в большинстве случаев это 0 ), то есть вместо того, чтобы выдать сообщение, что y(0) - не определено, формируется результат (при a=3, b=2, c=4) y=3*02+2*0+4=7, тогда как результата не существует вообще (0-1 будет принято как 0). Если же ввести в алгоритм проверку исходных данных, то получится разветвленная схема. При построении таких алгоритмов используются первичные конструкции типа &amp;quot;условие&amp;quot;. Разветвляющимся называют алгоритм с однократным повторением операторов, причем та или иная группа операторов должна или не должна выполняться в зависимости от соблюдения некоторых условий. В алгоритме образуется две взаимоисключающие ветви, в результате чего появляется новое качество - устойчивость в работе алгоритма и возможность гибкого реагирования алгоритма на различные требования математической модели. Необходимо отметить следующее: все ветви алгоритма должны быть легко идентифицируемы. Если в достаточно большом алгоритме таких &amp;quot;опасных&amp;quot; мест много и об идентификации отдельных ветвей программы не позаботиться заранее, то разобраться в сложившейся ситуации с решением будет очень сложно. Циклическим называется такой алгоритм, операторы которого выполняются многократно при изменяющихся значениях аргументов. Для организации цикла необходимо: найти начальное значение параметра, определяющего условия выхода из цикла; установить правило изменения параметра цикла; организовать проверку условия продолжения или окончания вычислений; организовать вычисления в &amp;quot;теле&amp;quot; цикла. Организация циклического процесса связана с использованием первичных конструкций типа &amp;quot;предусловие&amp;quot; и &amp;quot;постусловие&amp;quot; (рис.10, 3а и 3б). При внешнем сходстве эти конструкции имеют принципиальное различие между собой. Оно заключается в том, что в конструкции &amp;quot;предусловие&amp;quot; возможен случай, когда &amp;quot;тело&amp;quot; цикла может не осуществиться ни одного раза. Конструкция &amp;quot;постусловие&amp;quot; обеспечивает обязательное осуществление &amp;quot;тела&amp;quot; цикла хотя бы один раз. Алгоритмы циклической структуры дают возможность создавать компактные алгоритмы. В зависимости от правила проверки условия продолжения цикла и правила изменения параметра цикла число повторений цикла может оказаться конечным или бесконечным - наступит состояние &amp;quot;зацикливания&amp;quot;. Внешнее проявление последнего - неограниченное возрастание времени работы программы. Против &amp;quot;зацикливания&amp;quot; применяют специальные методы, в частности, путем усложнения условия продолжения принудительно обрывают циклический процесс после определенного числа повторений. Если правило изменения параметра цикла и условие проверки продолжения достаточно просты, то возможно заранее предсказать количество &amp;quot;оборотов&amp;quot; цикла. Так, например, при правиле изменения параметра цикла x, начиная с x=xн, по закону x=x+d, при условии x, xк это число будет выражаться как n = [(xк-xн)/d]+1, где [ ]- означает целую часть числа.
  32. ИДЕИ, ОСПАРИВАТЬ КОТОРЫЕ БЕСПОЛЕЗНО. 1. В любой программе существуют ошибки. Критерий корректности программ - не наличие или отсутствие ошибок, а степень их критичности. 2. Программа никогда не бывает закончена. После написания &amp;quot;окончательного&amp;quot; варианта будут еще изменения (ошибки), которые захочется внести (исправить). Однако желательно где-нибудь остановиться. 3. Чем меньше программа, тем она лучше. Если вы работаете над программой, и ее объем постоянно увеличивается, значит надо ее стереть и вернуться к какой-нибудь предыдущей версии. Улучшать программу можно только до тех пор, пока ее объем уменьшается. 4. Процесс программирования - процесс выбора между эффективностью и универсальностью. Или программа пишется долгое время, но получается универсальной, или она пишется быстро, но получается неуклюжей и громозкой. Задача программиста - выбрать подходящий компромис между эффективностью и универсальностью.