// PascalABC.NET 3.3, сборка 1611 от 06.01.2018 // Внимание! Если программа не работает, обновите версию!
begin var (n,m):= ReadInteger2('n, m -> '); var a:= MatrRandom(m,n);Writeln('Исходная матрица:');a.Println; dec(n);dec(m);for var i:= 0 to m do begin swap(a[i, a.Row(i).IndexMin],a[i, n]); swap(a[i, a.Row(i).IndexMax],a[i, 0]); end; Writeln('Конечная матрица:'); a.Print end.
Язык программирования имеет какой-то официальный стандарт. От которого можно в той или иной степени отклоняться. А иногда и нужно, чтобы язык не умер, перестав удовлетворять современным технологиям программирования.
Посмотрим на примере такого распространенного языка, как Паскаль.
Никлаус Вирт описал Паскаль в 1970 году. Будучи соавтором разработки языка Algol-68, он взял за основу алголоподобный синтаксис, в то время считавшийся наиболее удачным.
Первая реализация паскаля была сделана под конкретную машину и носила отпечаток требований её операционной системы. Сюда, например, относится требование, чтобы программа начиналась с оператора Program, содержащего указания на файлы ввода и вывода. С распространением паскаля на другие машины нужда в этих указаниях отпала, но некоторые школьные учителя, даже не зная о причинах, до сих пор уверяют учеников, что программа должна начинаться именно с program!
Шло время, программирование не стояло на месте. Возникали новые языки, создавались новые технологии, компьютеры проникали во все новые области. Появились персональные компьютеры. С этого момента Паскаль получил вторую жизнь. Понятный, быстро изучаемый и компилируемый в компактный код, это был отличный язык для "персоналок" с объемом памяти в 640 Кбайт. Но это был уже не тот, прежний Паскаль. Для работы с персоналками понадобилось его существенно дополнить. так возникла интегрированная система (среда) программирования Turbo Pascal. Именно система, потому что она включала компилятор с диалекта (т.е. с некоторой конкретной реализации) языка Паскаль, текстовый редактор, систему отладки, систему справок и поддержку выполнения программы.
Впоследствии возникли другие диалекты Паскаля, такие как входной язык системы Borland Delphi, язык Free Pascal, язык системы Pascal ABC и наконец, среда программирования PascalABC.NET, которая очень далеко ушла от Паскаля Никлауса Вирта, вобрав в себя лучшие черты и средства языков C#, Python и Haskell.
// Внимание! Если программа не работает, обновите версию!
begin
var (n,m):= ReadInteger2('n, m -> ');
var a:= MatrRandom(m,n);Writeln('Исходная матрица:');a.Println;
dec(n);dec(m);for var i:= 0 to m do
begin
swap(a[i, a.Row(i).IndexMin],a[i, n]);
swap(a[i, a.Row(i).IndexMax],a[i, 0]);
end;
Writeln('Конечная матрица:');
a.Print
end.
Пример:
n, m -> 5 6
Исходная матрица:
99 9 30 83 11
89 13 70 50 54
43 59 22 13 89
67 27 48 72 41
63 62 5 58 71
45 35 60 3 95
Конечная матрица:
99 11 30 83 9
89 54 70 50 13
89 59 22 43 13
72 41 48 67 27
71 62 63 58 5
95 35 60 45 3