LN - это сокращение от английского слова LINE, т.е. СТРОКА и наличие этих букв обозначает, что, после завершения вывода этого текста нужно переместить курсор к началу следующей строки.
Для справки : курсор - это специальный символ (знак подчеркивания или прямоугольник), который указывает позицию экрана, в которую будет выводится очередной символ.
for i:=1 to 10 do readln(a[i]);
Эта строка в программе как раз и обеспечивает ввод в объявленный нами массив A с клавиатуры 10 чисел.
Дословно эта строчка читается так:
Для I от 1 до 10 делать читать A[i]
Т.о., компьютер, повинуясь этой строчке нашей программы, ждет, пока мы наберем на клавиатуре число и нажмем клавишу "Ввод" ("Enter"). Это число он занесет в элемент массива A[1], т.е. первый элемент массива A. Потом компьютер ждет, пока мы наберем на клавиатуре второе число, что бы занести его в A[2] и так далее, до 10-го элемента, который он занесет в A[10].
s:=0;
Вспомним, что переменную S мы завели, что бы накапливать там сумму введенных чисел. Понятно, что начальное значение этой переменной, т.е. значение переменной S пока мы не начали складывать, должно быть равно 0.
Это как раз и обеспечивается данным оператором.
А дословно он читается так:
В переменную S занести число 0.
Или так:
Переменной S присвоить значение 0.
for i:=1 to 10 do s:=s+a[i];
Дословно эта строка читается так:
Для I от 1 до 10 делать
новое значение переменной S вычислить как результат сложения старого значения переменной S и элемента массива A[i]
Или, по другому, ее можно читать и так :
Для I от 1 до 10 делать
взять старое значение переменной S, прибавить к нему значение элемента A[i] и занести полученную сумму обратно в переменную S.
И вот это - единственная строчка в программе, которая и решает непосредственно поставленную задачу - т.е. последовательно суммирует введенные 10 чисел в переменной S, добавляя туда сначала значение A[1] - т.е. первого элемента массива A (т.е первого числа, которое мы ввели с клавиатуры), потом значение A[2] - т.е. второго элемента массива A (т.е второго числа, которое мы ввели с клавиатуры), потом значение A[3] - т.е. третьего элемента массива A (т.е третьего числа, которое мы ввели с клавиатуры), и так далее, наконец, значение A[10] - т.е. десятого элемента массива A (т.е десятого числа, которое мы ввели с клавиатуры).
После завершения выполнения этой строки в переменной S находится искомый результат - требуемая нам сумма!
writeln('исходный массив');
Эта строка обеспечивает вывод на экран текста: исходный массив и нужна она для того, что бы человек, который будет запускать нашу программу, знал что за числа сейчас будут выводится (числа исходного массива в данном случае)
for i:=1 to 10 do write(a[i], ' ');
Дословно эта строка читается так: Для I от 1 до 10 делать
вывести на экран A[i], а потом символ пробел (' ')
Обратите внимание на то, что используется оператор WRITE, а не WRITELN (как это было ранее). При этом курсор НЕ переводится к началу следующей строки, а остается за последним выведенным символом, таким образом числа массива A выводятся одно за другим в одной строке, а что бы они не "слиплись", мы разделяем их, выводя после каждого числа символ пробел (' ').
Если бы мы использовали оператор WRITELN, то числа выводились бы в столбик - а это, в нашем случае, менее наглядно.
writeln;
А вот для того, что бы все-таки перевести курсор к началу следующей строки после завершения вывода всего массива, используется этот оператор. В результате слово "ответ" из следующего оператора выводится с начала следующей строки.
writeln('ответ ‘,s);
Понятно, что это оператор мы используем, что бы дать понять, что далее мы намерены сообщить результат работы нашей программы.
End.
Ну а это обязательный последний оператор в нашей программе. Обязательной является также и точка после слова END, о которой, к сожалению, часто забывают начинающие программисты.
Ну вот мы и разобрали первую простейшую программу на ПАСКАЛЕ. А что измениться в программе, когда Вы будете писать другие программы, обрабатывающие одномерные массивы?
Оказывается, только расчетная часть программы. Т.е. при написании своих программ, Вы всегда должны объявлять массивы и переменные, вводить исходные данные, выводить исходные данные и результаты, в точности используя соответствующие части разобранной нами программы.
А менять от программы к программе необходимо только ту часть, которая собственно занимается расчетами.
Например, что нужно изменить в нашей программе, если мы захотим не сложить, а перемножить введенные числа ?
Безусловно, Вы догадались, что изменить нужно всего лишь 2 символа: + на * и 0 на 1 получив при этом следующую расчетную часть:
s:=1; {Перемножение элементов}
for i:=1 to 10 do s:=s*a[i]; {одномерного массива}
Ну а программа, которая будет перемножать, а не складывать введенные числа будет выглядеть так:
program Mul_1mas; {Перемножение элементов одномерного массива}
var {Обьявление}
a : array [1..10] of integer; {массива a из 10 элементов}
i, s : integer;
begin
writeln('Вводите 10 чисел'); {поясняющий текст}
for i:=1 to 10 do readln(a[i]); {Ввод одномерного массива}
s:=1;
for i:=1 to 10 do s:=s*a[i]; {Перемножение элементов одномерного массива}
writeln('исходный массив'); {Поясняющий текст}
for i:=1 to 10 do write(a[i], ' '); {Вывод одномерного массива}
writeln;
writeln('ответ',s); {результат}
end.
Таким образом, при разработке программ главное - придумать ее расчетную часть или - как иногда говорят - составить алгоритм работы программы. Для большого количества задач такие алгоритмы уже давно составлены, и вместо того, чтобы "изобретать велосипед", достаточно изучить и запомнить такие алгоритмы, что, собственно, и предлагается сделать Вам в следующем пункте.
Простейшие алгоритмы на одномерном массиве:
s:=0; {Подсчет элементов равных заданному например – 5}
for i:=1 to 10 do
if a[i]=5 then s :=s+1;
...
s:=a[1]; {Поиск максимального элемента }
for i:=2 to 10 do
if a[i]>s then s:=a[i];
...
s:=a[1]; {Поиск минимального элемента}
for i:=2 to 10 do
if a[i]<s then s:=a[i];
...
i:=1; {Поиск элементов равных заданному например – 3}