Задание: Вычислять с использованием while квадратные корни из чисел 900, 893, 886, 879 и т.д. до тех пор, пока это можно делать.
VAR f : Integer;BEGIN Write(‘Вычисление квадратных корней '); f:=900; while f>=0 do begin Write(sqrt(f),' '); f:=f-7; end; Write(' Вычисления окончены')END.
Задание: Вычислять с использованием repeat квадратные корни из чисел 900, 893, 886, 879 и т.д. до тех пор, пока это можно делать.
VAR f : Integer;BEGIN Write(‘Вычисление квадратных корней '); f:=900; repeat
Write(sqrt(f):3:3,' ');
f:=f-7;
until f<0; Write(' Вычисления окончены')END.
Напечатать с помощью оператора for:
Прямой счет: -5 -4 -3 -2 -1 0 1 2 3 4 5
Обратный счет: 5 4 3 2 1 0 -1 -2 -3 -4 -5 Конец счета
VAR i : Integer;BEGIN
Write(‘Прямой счет’); for i:=-5 to 5 do begin Write(i); end;
Write(‘Обратный счет’); for i:=5 downto -5 do begin Write(i); end;
Write('Счет окончен');
END.
Задача: В компьютер вводится N чисел. Вычислить и один раз напечатать их сумму.
VAR i,N:Integer;
a,s:Real;
BEGIN
ReadLn(N);
s:=0;
for i:=1 to N do begin
ReadLn(a);
s:=s+a
end {for};
WriteLn(‘Сумма равна ' ,s:20:10)
END.
Пусть N=2, a=5 и 3. Тогда по этой программе Паскаль напечатает ...
Задача: В компьютер вводится N чисел. Вычислить и один раз напечатать их сумму.
VAR i,N:Integer;
a,s:Real;
BEGIN
ReadLn(N);
s:=0;
for i:=1 to N do begin
ReadLn(a);
s:=s+a
end {for};
WriteLn(‘Сумма равна ' ,s:20:10)
END.
Что он напечатает, если:
Вместо s:=0 написать s:=10.
Задача: В компьютер вводится N чисел. Вычислить и один раз напечатать их сумму.
VAR i,N:Integer;
a,s:Real;
BEGIN
ReadLn(N);
s:=0;
for i:=1 to N do begin
ReadLn(a);
s:=s+a
end {for};
WriteLn(‘Сумма равна ' ,s:20:10)
END.
Что он напечатает, если:
Вместо s:=s+a написать s:=s+a+1.
Задача: В компьютер вводится N чисел. Вычислить и один раз напечатать их сумму.
VAR i,N:Integer;
a,s:Real;
BEGIN
ReadLn(N);
s:=0;
for i:=1 to N do begin
ReadLn(a);
s:=s+a
end {for};
WriteLn(‘Сумма равна ' ,s:20:10)
END.
Что он напечатает, если:
Строки end {for} и WriteLn поменять местами.
Задача: В компьютер вводится N чисел. Вычислить и один раз напечатать их сумму.
VAR i,N:Integer;
a,s:Real;
BEGIN
ReadLn(N);
s:=0;
for i:=1 to N do begin
ReadLn(a);
s:=s+a
end {for};
WriteLn(‘Сумма равна ' ,s:20:10)
END.
Что он напечатает, если:
Строки s:=0 и for поменять местами.
Задача: В компьютер вводится N чисел. Вычислить и один раз напечатать их сумму.
VAR i,N:Integer;
a,s:Real;
BEGIN
ReadLn(N);
s:=0;
for i:=1 to N do begin
ReadLn(a);
s:=s+a
end {for};
WriteLn(‘Сумма равна ' ,s:20:10)
END.
Что он напечатает, если:
Строки for и ReadLn поменять местами.
Задача: В компьютер вводится N чисел. Вычислить и один раз напечатать их сумму.
VAR i,N:Integer;
a,s:Real;
BEGIN
ReadLn(N);
s:=0;
for i:=1 to N do begin
ReadLn(a);
s:=s+a
end {for};
WriteLn(‘Сумма равна ' ,s:20:10)
END.
Что он напечатает, если:
Строки s:=s+a и end {for} поменять местами.
Задача: В компьютер вводится N чисел. Вычислить и один раз напечатать их сумму.
VAR i,N:Integer;
a,s:Real;
BEGIN
ReadLn(N);
s:=0;
for i:=1 to N do begin
ReadLn(a);
s:=s+a
end {for};
WriteLn(‘Сумма равна ' ,s:20:10)
END.
Что он напечатает, если:
Вместо for i:=1 to N написать for i:=2 to N.
Самостоятельная работа
1 вариант
2 вариант
Используйте три вида циклов
МАССИВ - наиболее широко используемый структурированный тип данных, предназначенный для хранения нескольких однотипных элементов.
Массив обозначается одним именем. Так всю совокупность действительных чисел
1.6, 14.9, -5.0, 8.5, 0.46
можно считать массивом и обозначить одним именем, например А. Образующие массив переменные называются элементами массива. Каждый элемент массива обозначается именем массива с индексом, заключенным в квадратные скобки.
A[1], A[2], A[3], ..., A[n].
Индекс определяет положение элемента массива данных относительно его начала.
Для рассмотренного выше примера элементами массива А являются:
A[1]=1.6, A[2]=14.9, A[3]=-5.0, A[4]=8.5, A[5]=0.46
1.6 | 14.9 | -5.0 | 8.5 | 0.46 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
5 | -7 | 6 | 2 | 3 | -4 | 3 | -8 | 1 | -2 |
а[1] | а[2] | а[3] | а[4] | а[5] | а[10] |
№
элемента
Значение элемента
Обозначение
элемента массива
МАССИВЫ
Описание массива
МАССИВЫ
Общий вид описания (одномерного) массива:
array[<тип_индексов> ] of <тип_компонент>;
Например, одномерный (линейный) массив, состоящий не более чем из 10 целых чисел, можно описать следующим образом:
var a1: array [1..10] of integer;
НУМЕРАЦИЯ
Нумерация компонент массива не обязана начинаться с 1 или с 0 - вы можете описывать массив, пронумерованный любыми целыми числами.
Необходимо лишь, чтобы номер последней компоненты был больше, чем номер первой:
var a1: array [-5..4] of integer;
НУМЕРАЦИЯ
Собственно говоря, нумеровать компоненты массива можно не только целыми числами. Любой порядковый тип данных (перечислимый, интервальный, символьный, логический, а также произвольный тип, созданный на их основе) имеет право выступать в роли нумератора.
Таким образом, допустимы следующие описания массивов:
type char = 'a','c'..'z'; (- отсутствует символ "b")
var a1: array[char] of integer; - 256 компонент
a2: array [char] of integer; - 256 целых компонент
a3: array [shortint] of real; - 256 вещественных компонент
Нумерация
Общий размер массива не должен превосходить 65 520 байт.
Нумерация
Для краткости и удобства многомерные массивы можно описывать и более простым способом:
var a9: array[1..10,1..20] of real; - двумерный массив 10 х 20
a10: array[boolean, -1..1,char, -10..10] of word; - четырехмерный массив 2 х 3 х 256 х 21
Общее ограничение на размер массива - не более 65 520 байт - сохраняется и для многомерных массивов.
Количество компонент многомерного массива вычисляется как произведение всех его "измерений".
Таким образом, в массиве а9 содержится 200 компонент, а в массиве а10 - 32 256 компонент.
Описание переменных размерностей
Если ваша программа должна обрабатывать матрицы переменных размерностей (скажем, N по горизонтали и М по вертикали), то вы столкнетесь с проблемой изначального задания массива, ведь в разделе var не допускается использование переменных.
Следовательно, самый логичный, казалось бы, вариант
var m,n: integer; a: array[1..m,1..n] of real;
придется отбросить.
Описание переменных размерностей
Предположим, однако, что вам известны максимальные границы, в которые могут попасть индексы обрабатываемого массива.
Скажем, N и М заведомо не могут превосходить 100. Тогда можно выделить место под наибольший возможный массив, а реально работать только с малой его частью:
const nnn=100;
var a: array[1..nnn,1..nnn] of real;
m,n: integer;
Обращение к компонентам массива
Массивы относятся к структурам прямого доступа. Это означает, что возможно напрямую (не перебирая предварительно все предшествующие компоненты) обратиться к любой интересующей нас компоненте массива.
Доступ к компонентам линейного массива осуществляется так:
<имя_массива>[<индекс_компоненты>]
а многомерного - так:
<имя_массива>[<индекс>,_,<индекс>]
Обращение к компонентам массива
ПРАВИЛА употребления индексов при обращении к компонентам массива таковы:
Индекс компоненты может быть константой, переменной или выражением, куда входят операции и вызовы функций.
Тип каждого индекса должен быть совместим с типом, объявленным в описании массива именно для соответствующего "измерения"; менять индексы местами нельзя.
Количество индексов не должно превышать количество "измерений" массива. Попытка обратиться к линейному массиву как к многомерному обязательно вызовет ошибку. А вот обратная ситуация вполне возможна: например, если вы описали N-мерный массив, то его можно воспринимать как линейный массив, состоящий из (N-1)-мерных массивов.
Обращение к компонентам массива
Примеры использования компонент массива:
a2['z']:= a2['z']+1;
a3[-10]:= 2.5;
a3[i+j]:= a9[i,j];
a10[x>0,sgn(x),'!',abs(k*5)]:= 0;
Задание массива константой
Для того чтобы не вводить массивы вручную во время отладки программы (особенно если они имеют большую размерность), можно пользоваться не только файлами. Существует и более простой способ, когда входные данные задаются прямо в тексте программы при помощи типизированных констант.
Если массив - линейный (вектор), то начальные значения для компонент этого вектора задаются через запятую, а сам вектор заключается в круглые скобки.
Задание массива константой
Многомерный массив также можно рассматривать как линейный, предполагая, что его компонентами служат другие массивы.
Таким образом, для системы вложенных векторов действует то же правило задания типизированной константы: каждый вектор ограничивается снаружи круглыми скобками.
Исключение составляют только массивы, компонентами которых являются величины типа char. Такие массивы можно задавать проще: строкой символов.
Задание массива константой
Примеры задания массивов типизированными константами:
type mass = array[1..3,1..2] of byte;
const a: array[-1..1] of byte = (0,0,0); {линейный}
b: mass = ((1,2),(3,4),(5,6)); {двумерный}
s: array[0..9] of char = '0123456789';
Замечание: Невозможно задать неименованную или нетипизированную константу, относящуюся к типу данных array.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.