В основе работы практически с любой операционной системой (далее ОС) лежит умение управляться с окнами. Они представляют собой прямоугольную область экрана, где отображается та или иная информация. Окна можно открывать, закрывать, а также сворачивать, разворачивать, изменять их размеры. В открытом виде они могут занимать как весь экран, так и совсем небольшую его область. Если окошки свернуты, они будут отображены в панели задач в виде кнопок: нажмите нужную вам, все вновь развернется. Существует четыре типа окон: 1) программные – в них работают все загруженные в память ОС программы и приложения; 2) окна дисков и папок, которые помогают увидеть всю файловую структуру на дисках; 3) вторичные – это окна, где отображаются созданные в программах документы; 4) диалоговые окна. Именно о них, называемых также окнами запросов, и пойдет далее речь. Итак, появляются они в процессе работы с ОС и ее приложениями и располагаются поверх остальных окон на вашем экране. Они содержат в себе запрос информации, интересующей пользователя, или подтверждают его действия. Диалоговое окно нельзя изменить в размерах или свернуть, его можно только закрыть. Оно может закрываться автоматически после того, как даст ответ на запрос, или в принудительном порядке, то есть одним щелчком на кнопке закрытия. Чтобы ответить на запрос в полной мере, окна обладают самыми различными кнопками и полями.
Ввод данных
Для ввода исходных данных чаще всего используется процедура ReadLn:
ReadLn(A1,A2,...AK);
Процедура производит чтение К значений исходных данных и присваивает эти значения переменным А1, А2, ..., АК.
При вводе исходных данных происходит преобразование из внешней формы представления во внутреннюю, определяемую типом переменных. Переменные, образующие список ввода, могут принадлежать либо к целому, либо к действительному, либо к символьному типам. Чтение исходных данных логического типа в языке Паскаль недопустимо.
Значения исходных данных могут отделяться друг от друга пробелами и нажатием клавиш табуляции и Enter.
Не допускается разделение вводимых чисел запятыми!
Вывод данных
Для вывода результатов работы программы на экран используются процедуры:
Write(A1,A2,...AK);
WriteLn(A1,A2,...AK);
Первый из этих операторов производит вывод значений переменных А1, А2,...,АК в строку экрана. Второй оператор, в отличие от первого, не только производит вывод данных на экран, но и производит переход к началу следующей экранной строки. Если процедура writeln используется без параметров, то она просто производит пропуск строки и переход к началу следующей строки.
Переменные, составляющие список вывода, могут относиться к целому, действительному, символьному или булевскому типам. В качестве элемента списка вывода кроме имен переменных могут использоваться выражения и строки.
Форма представления значений в поле вывода соответствует типу переменных и выражений: величины целого типа выводятся как целые десятичные числа, действительного типа - как действительные десятичные числа с десятичным порядком, символьного типа и строки - в виде символов, логического типа - в виде логических констант TRUE и FALSE.
Оператор вывода позволяет задать ширину поля вывода для каждого элемента списка вывода. В этом случае элемент списка вывода имеет вид А:К, где А - выражение или строка, К - выражение либо константа целого типа. Если выводимое значение занимает в поле вывода меньше позиций, чем К, то перед этим значением располагаются пробелы. Если выводимое значение не помещается в ширину поля К, то для этого значения будет отведено необходимое количество позиций.
Для величин действительного типа элемент списка вывода может иметь вид А:К:М, где А - переменная или выражение действительного типа, К - ширина поля вывода, М - число цифр дробной части выводимого значения. К и М - выражения или константы целого типа. В этом случае действительные значения выводятся в форме десятичного числа с фиксированной точкой.
Пример записи операторов вывода:
var rA, rB: Real;
iP,iQ:Integer;
bR, bS: Boolean;
chT, chV, chU, chW: Char;
begin
. . .
WriteLn(rA, rB:10:2);
WriteLn(iP, iQ:8);
WriteLn(bR, bS:8);
WriteLn(chT, chV, chU, chW);
end.
1) 31(Просто считаешь все символы + пробелы)
2)4 (32/8)
3)107
Const
n = 15;
var
a: array[1..n, 1..n] of integer;
i, j: integer;
HasNull: Boolean;
begin
Randomize;
writeln('Исходная матрица');
HasNull := False;
for i := 1 to n do
begin
for j := 1 to n do
begin
a[i, j] := Random(100) - 50;
if a[i, j] = 0 then HasNull := True;
write(a[i, j]:5);
end;
writeln
end;
if HasNull then writeln('Матрица имеет нулевые элементы')
else writeln('Матрица не имеет нулевых элементов')
end.
Тестовое решение:
Исходная матрица
16 23 -50 14 -44 15 -28 8 40 -43 -4 31 -11 -24 -15
31 -37 -42 2 15 23 -8 -19 14 -35 -5 -30 41 11 -18
-44 -3 30 -34 40 39 -7 -8 -6 -16 29 -11 -43 39 28
5 37 42 46 13 -27 -39 2 -19 -45 -27 -8 -14 -2 11
-6 -20 47 8 -49 48 -50 -28 -15 -4 -13 20 14 -32 35
-17 -16 -8 35 10 7 -22 45 47 -41 45 45 -2 -39 17
-3 -43 43 32 39 -2 -9 -1 37 29 4 15 7 0 -24
2 -4 -17 -5 21 38 49 0 37 -47 -34 -15 -50 -2 -45
-47 2 -40 18 48 -20 27 31 -21 -13 42 35 4 -45 -44
42 20 -6 21 6 -2 11 -48 -10 28 -3 6 -45 29 22
-38 -9 -50 32 26 -49 4 38 1 46 24 15 -46 -42 29
-47 -5 -6 31 -39 -5 40 -21 41 7 -9 -1 20 39 1
23 21 -48 6 -26 0 35 22 -21 -46 -12 32 42 24 32
32 7 44 11 25 -49 -38 -26 17 -24 -28 -38 -42 -25 -16
2 33 48 -50 -27 -47 13 -2 34 -22 -32 23 -35 26 22
Матрица имеет нулевые элементы