Пример программы на алгол

integer m, n boolean with u, with v, real eps, tol] array a, qt u, v comment — вычисление сингулярных значений и полное ортогональное разложение действительной прямоугольной матрицы А в виде А= U diag (q) V T , U T U = v t V = 1. Массивы a [1 : /n, 1 : n], и [1 : m, 1 : n], v [1 : л, 1 : n], q [1 : п] предназначены для размещения матриц A, U, V и diag (q) соответственно. Фактические массивы, обозначенные а, и, v, могут быть тождественно равными, если не выполняется условие with и = with v = true. При выполнении этого условия фактические параметры, соответствующие массивам и и v, должны быть различными. В процедуре предполагается, что т ^п

begin

integer /, /, k, /, 11; real с, /, g, h, s, x, y, z array e[ : ri\

for i : = 1 step 1 until m do

for / : = 1 step 1 until n do и [i, j] : = a [i, /];

comment — приведение исходной матрицы к двухдиагональной форме

с помощью преобразования Хаусхолдера;

g: = Jt: = 0;

for i : = 1 step 1 until n do

Реликтовые программы. Алгол или Фортран #computer #pc #эвм #8bit #keyboard

i: = g; J « 0; <:«*+!;

for /:=1 step 1 until m do s ! = 5 -J- и [/,

for / : = / step 1 until n do

for /г : = i step 1 until m do s t = s 4- w [k, ixu [k, /Jj f:=s’//i;

for k i = t step 1 until m do и [k, j]i = u[k. Л + /ХМ [/г. 0 end / end s;

q[i]: = g s: = 0;

*. k];

for / : = / step 1 until m do

for k : = / step 1 until rc do s : = s + и [/, /г]Х

Хи[ for ] : = и [у, А 1 ]

y: = abs (q [i]) -f abs (e [/]); if # > к then л; t = у end /;

comment — формирование результирующей матрицы правых преобразований;

if with v then for i : = /г step — 1 until 1 dc begin

if g=f 0 then begin

for | : = / step 1 until n do у [у, /] : = и [i, f]/h>

for у : = / step 1 until n do

for k i = / step 1 until n do s : = s + и [i, k]xv [k, /];

for k i = / step 1 until n do у [/г, у] t « у [/г, у] + sX

Xv [k> i] end у end g^;

for у : = / step 1 until n do v [t, >] : = v [/, /] i = 0; о I/, «i«i; gi = ^ [П; /r«=*

end f;

comment — формирование результирующей матрицы левых преобразований>

if withu then for i : = n step — 1 until 1 do

for/: = / step 1 until n do w [i, y]’: = 0j

if gi= 0 then

for у : = / step 1 until я do

for /г : = /step 1 until m do 5 : == s + и [k, i]xu[kt /]; / : = s/h;

for k: — i step 1 until m do и [kt j] : = и [

for у : = t step 1 until m do и [у, /] : = и [у, /]/g end g

else for j : ~ i step 1 until m do и [у, /] : = 0; w[i, /]: = u [i, /]+ 1 end i;

comment — приведение двухдиагональной матрицы к диагональной форме; eps : =epsxx-,

for k: — n step — 1 until 1 do begin test f splitting:

for / : = k step — 1 until 1 do begin

if abs (e [l])^eps then go to test f convergence’, if abs (q [/ — l])^eps then go to cancellation end /;

comment — аннулирование элемента e [/], если / > 1; cancellation :

с: =0; s: = 1; 11 : = /—!; for i: = l step 1 until h: =q[i] : = sqrt (fXf + gXg)’, c:=g/h’,s:=—f/h;

5 ХУДШИХ языков программирования, которые не стоит учить!

if withu then for у : — 1 step 1 until m do begin

Читайте также:
Топ программ для чтения манги

y: = u[j, 11]; z: = u [/, i]; «[/» ^1 : =f/Xc-t-zXs; w [y, t] : = — t end end i;

test f convergence :

z : = q [k]; if / = k then go to convergence;

comment — формирование сдвига для (^/^-преобразования; *: = ? [/];

y: = q[k—]; g: = e[k-l]; h: = e[k];

f’- = ((y-z)X(y + z) + (g-h)X(g + h))/(2xhxy); g : = sqrt (/X X/+1);

comment — очередной шаг Q/^-преобразования;

for /: = / + ! step 1 until k do begin

g : = e [i]; y: = q [i] h : = sxg; g : = cXg;

e[i — 1] : =z: =sqrt(fxf j rhxh); с : = f/z; s : = h/z;

f:=xxc~>-gxs; g: = —xXs + gXc; h : = yXs; y:=yXc;

if ш/Ду then for у : = 1 step 1 until n do

x: = v [/,/—!]; z:=—y[/, f];

у [у, i— 1] : =xxc + zXs; v [y, i] : = —

end y;

^ [/— 1]: = г; = 5^г/ (fxf + hxh); с: = //г; s:=h/z;

f : = cxg + sXy; x: = — sXg + cXy;

if withu then for /: = 1 step 1 until m do

comment — формирование элементов массива q[k]t состоящего из неотрицателых элементов;

if* with) then for /: = 1 step 1 until n do

v [/, k]: = — v [/, k]

end г, end k end sud;

procedure minfit (m, л, p, eps, tol) trans : (ab) result : (q); value m, л, p, eps, to/; integer m, л, p; real eps, /0/; array ab, q; comment — вычисление матриц diag (q), V и С, которые связаны с исходными действительными матрицами А размера т X п и В размера т X р следующим соотношением L^AV = diag (q) и lljB = С. Здесь V и Uc — ортогональные матрицы. Сингулярные числа и матрицы V и С могут быть использованы для определения матрицы X, минимизирующей норму ||АХ — в||е или ||X|JE. Матрица X может быть сформирована следующим образом!

X = V X diag* (q) X С.

Процедура также позволяет вычислять общее решение недоопределенной линейной системы уравнений, ранг которой т меньше п. Массив q [1 : п] содержит матрицу diag [q]. Матрицы А и В заданы в первых т строках массива ab [1 : max (m, л), 1 : л -f- p]. В результате вычислений матрица V будет размещена в первых п строках и столбцах массива ab, а матрица С — в последних р столбцах массива ab (если р > 0);

integer i, /, k, I, 11, nl, np; real c, /, g, л, s, x, y, z; array e [1 : л];

comment —- приведение исходной матрицы к двухдиагональной форме с помощью преобразований Хаусхолдера: g : = х : = 0; лр : = п -f- p;

tor i : =• 1 step 1 until л do begin

e [t]: = g; s : = 0; /: = *+ 1;

for / : = / step 1 until m do s : = s + ab [/, i] f 2;

h: = fXg — s; ab [/, /]: = / — g;

for /: = / step 1 until лр do

for k : = i step 1 until m do s : = s + ab [k, i] xab [k, /];

f or k : = i step 1 until m do ab [kt /]: = ab [h ‘Xab[k, i]

end j

then for / : = I step 1 until n do s ; = s + ab [it j] 12j

for / : = / step 1 until n do e [j] : = ab [it j]/h;

for / : = / step 1 until m do

for k : = / step 1 until л do s: =*6 + ab [/, Л] X a6 [/, ^]; for k : = / step 1 until /г do ab [/, k] : = 06 [/, aj] + s X e [k] end / end s;

у : =abs (q [i]) + abs (e [/]); if i/ > x then * : = у end t;

comment — формирование результирующей двухдиагональной матрицы правых преобразований; for i: = n step— I until 1 do begin

if g^O then begin

h:=ab [i, i+ l]Xg

for / : = / step 1 until n do ab [/, i] : = ab [i, j]lh

Читайте также:
Графика в паскале abc примеры программ

for / : = / step 1 until n do

for k : = / step 1 until n do

for k : = I step 1 until n do

06 [k, j]: = ab [k, j] + sxab[k, i] end / end g;

for j : = / step 1 until л do «6 [i, j] : = a6 [/, i] : == 0; ab [i, i : = 1; g: = e[i]; /: =f

end i

eps : = epsXA:; л/ : = л + 1 ;

for Ј : = m + 1 step 1 until л do

for / : = nl step 1 until np do ab [i, j] : = 0,

comment — приведение двухдиагональной матрицы к диагональной форме;

for k : = п step — 1 until 1 do

test f splitting:

for / : — k step — 1 until 1 do begin

if abs (q [I — i]) ^eps then go to cancellation

comment — аннулирование элемента e[l], если />1; cancellation:

c: =0; s: = 1; //:-=/—!; for/ : = / step 1 until k do begin

/ : = sxe [/]; e [i] : = cXe [i];

if abs (f)’^eps then go to tes^ / convergence;

g:=q(i>; q[i]:=h:=sqrt (fXf + gXg) с : = g/h; s: =

for / : = n 1 step 1 until np do

y:*=ab[Ut /]; z:=*ab [*,/]; ab (11, /]: = 6Xf/-f sxz; ab[i, /] : = — sxy + end / tnd /

/ convergence:

comment — формирование сдвига для Q/^-преобразования; г — 1]; g:=e [k—]- h: = e[k]

— h))fx

comment — очередной шаг QR -преобразования; с : = s : = 1 ;

for t : =» / + 1 step 1 until k do begin

g : = e [i]’, y: = q [i]; h : = sXg; g : = cXg; U.r-ll :^z:=sqrt (fXf + hXh); с : = //г; s: = /г/г;

for / : = 1 step 1 until n do begin

[/, f — 1] : == xxc+zxs] ab[j, t] s = — x

sqrt (fxf + hxh); с : = //г; s : = /i/z;

for / : = ш step 1 until np do begin

t, : = aft [г — 1 , /]; z : = ab (i, ;]; aM* — 1; /l: = cxy + sxz; ab [t,

e [/] : = 0; e [Л] : = /; q [k] : = x go to test f splitting; convergence;

comment — формирование массива q [k], состоящего из неотрицательных элементов;

end minfit.

for /’ : = 1 step 1 until n do ab [i, k] : = —ab [jt k]’,

Источник: studfile.net

Реферат на тему: ALGOL. Скачать бесплатно

Современные вычислительные машины представляют одно из самых значительных достижений человеческой мысли, влияние которого на развитие научно-технического прогресса трудно переоценить. Области применения ЭВМ непрерывно расширяются. Компьютеры стали применяться повсюду, они начинают затрагивать жизнь каждого человека.

На начальном этапе использования современного компьютера мы имеем дело не с самим компьютером, а с совокупностью правил, называемых языками программирования, на этих языках записываются действия, которые должен выполнять компьютер. Важное значение языка программирования подчёркивается тем фактом, что сама вычислительная машина может рассматриваться как аппаратный интерпретатор какого-нибудь конкретного языка, который называется машинным языком. Для обеспечения эффективной работы машины разработаны машинные языки, использование которых представляет известные трудности для человека.

Алго́л (англ. algol от англ. algorithmic — алгоритмический и англ. language — язык) — название ряда языков программирования, применяемых при составлении программ для решения научно-технических задач на ЭВМ. Разработан в 1958—1960 гг. (Алгол-58, Алгол-60); усовершенствован в 1964—1968 гг. (Алгол 68). Алгол относится к языкам высокого уровня и позволяет легко переводить алгебраические формулы в программные команды. Алгол был популярен в Европе, в том числе в СССР, однако он оказал заметное влияние на все разработанные позднее языки программирования — в частности, на язык Pascal.

Обычно под понятием Алгол подразумевается Алгол-60, в то время как Алгол 68 рассматривается как самостоятельный язык. Даже когда язык Алгол почти перестал использоваться для программирования, он ещё оставался официальным языком для публикации алгоритмов.

1. Историческая справка

Алгол был разработан комитетом, в который входили европейские и американские учёные.

Читайте также:
Ms dos как запустить программу

Первая версия этого языка, Алгол-58, была разработана в ходе напряженного восьмидневного совещания в конце весны 1958 года, преимущественно для решения численных задач. Программисты неоднозначно приняли новый язык, и широкого одобрения он так и не получил.

Джон Бэкус разработал нормальную форму Бэкуса как формальный способ описания алгоритмических языков, с помощью которой была составлена спецификация для языка Алгол-58. После усовершенствований, которые предложил Питер Наур, возникла форма Бэкуса-Наура, которая использовалась для спецификации языка Алгол-60. Кроме Бэкуса и Наура в комитет по языку Алгол вошёл также Уолли Фойрцойг, который позже создал язык Лого. ALGOL — 60 (1960) был прост и широко использовался в Европе.

Язык Алгол был принят фирмой Burroughs Corporation в их моделях, начиная с B5000 — этот язык получил название Elliott ALGOL. На компьютерах LGP-30 использовался язык Dartmouth ALGOL 30.

В 1965 году К. Хоар и Никлаус Вирт модифицировали Алгол-60. Эта версия, получившая название Алгол-W в честь Вирта (Wirth), была опубликована и приобрела большую популярность в университетских городках. Но комитет по Алголу ее отверг и сам занялся модификацией языка. В декабре 1968 года Международным комитетом специалистов по информатике был создан Алгол-68, работая с которым, программисты могли писать ключевые слова на родном языке. Ключевые слова содержатся в таблице трансляции, хранящейся в памяти компьютера и используемой компилятором Алгола-68 для преобразования программ в машинный код.

Сохраняя стилистическую связь со своим предшественником, Алгол-68 отличается более широкими возможностями и общностью конструкций. Его особенностями являются развитая система типов, автоматическое приведение типов, средства описания параллельных процессов и синхронизации, формальное описание языка на основе двухуровневых грамматик. Стремление к формальной строгости и последовательности сделало Алгол-68 слишком громоздким и сложным. Он использовался в ограниченных масштабах только американскими программистами.

2. Основы Алгол

Algol — язык программирования высокого уровня. Существуют три последовательно сменявших друг друга версии языка: Алгол-58, Алгол-60, Алгол-68. Язык предназначен для записи алгоритмов, которые строятся в виде последовательности процедур, применяемых для решения поставленной задачи.

Алгол подразделяется на три уровня:

  • язык описаний, определяющий основные понятия;
  • язык публикаций, позволяющий писать и обсуждать программы;
  • язык аппаратного уровня, реализуемый на компьютере.

Одним из недостатков языка было отсутствие процедур ввода и вывода данных, поэтому каждая реализация решала ввод-вывод совершенно по-разному. Широкого признания ни Алгол-58, ни его преемник Алгол-60 не получили, но в них были реализованы множество идей, получивших применение и развитие в других языках. Это — блочная структура, позволяющая делить программы на замкнутые, независимые единицы; рекурсия — способность программ повторно обращаться к себе; формализованное определение синтаксиса — способа размещения слов в языке; вложенные контексты; описания переменных; определения способа передачи параметров. В Алголе было предложено два способа передачи параметров в подпрограмму — по имени и по значению.

Для Алгола было разработано три разных синтаксиса:

  • для ссылок;
  • публикаций;
  • приложений.

Разница в синтаксисах состояла в разрешении использовать национальные ключевые слова и символ десятичной точки (точка или запятая, в зависимости от национальных стандартов).

Пример 1 (программы Hello, Word! для реализации Dartmouth ALGOL 30):

FILE F (KIND=REMOTE);

EBCDIC ARRAY E [0:11];

REPLACE E BY «HELLO WORLD!»;

Пример 2 (Альтернативная реализация для Elliott Algol):

Источник: otlichnici.ru

Пример программы на алгол

Download Close

Year: 1965

Источник: djvu.online

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru