- •3.1. Язык программирования Паскаль
- •3.2. Структура программы в Паскале. Ввод и вывод данных.
- •Var ij:integer; X: real;
- •Var a,b: real;
- •3.3. Работа в системе Турбо Паскаль
- •3.4. Условный оператор
- •Var a, b: integer;
- •3.5. Организация циклов
- •Var a, b: integer;
- •Var a, b: integer;
- •Var a, b: integer;
- •Var a, p: real; I, n: integer;
- •Var p, I, n: integer;
- •Var X, у: real;
- •Var a, s: real; I, n: integer;
- •Var a: array [1 .. N ] of real;
- •1. Вычисление суммы элементов массива.
- •Var a: array [1 .. N ] of real; s : real; I: integer;
- •2. Нахождение наибольшего элемента массива.
- •Var a: array [1 .. N ] of integer; max, I: integer;
- •3. Упорядочение массива по возрастанию.
- •Var a : array [ 1.. N ] of real; I, j: integer; c: real;
- •4. Поиск элемента в массиве.
- •Var a : array [1 .. N ] of real; X : real; I : integer;
- •3.7. Алгоритмы обработки таблиц
- •1. Вычисление суммы элементов главной диагонали квадратной таблицы.
- •Var b: array [ 1..N, 1..N ] of real; I, j: integer;
- •Var b: array [ 1.. N, 1 .. N ] of real; I, j: integer; s: real;
- •2. Нахождение наибольших элементов каждой строки таблицы.
- •Var b: array [1 .. N, 1 .. N ] of integer; I, j: integer; a: array [1 .. N ] of integer;
- •3. Нахождение сумм элементов столбцов таблицы.
- •Var b: array [1 .. N, 1 .. N ] of integer; s, I, j: integer; a: array [1 .. N ] of integer;
- •4. Перестановка строк таблицы.
- •Var b: array [ 1 .. N, 1 .. M ] of real; c: real; I, j, k, l: integer;
Var a, s: real; I, n: integer;
begin
write ('введите количество слагаемых п = ');
readln (n);
s: = 0;
for i: = 1 to n do
begin
write (i,’- oe число = ');
readln (a);
s: = s + a
end;
write ('сумма s = ',s);
readln
end.
Если количество чисел неизвестно, то можно задать число-ограничитель, например нуль. В таком случае используется цикл while или repeat.
s:-
0; repeat
readln
(a);
s:
= s + a until
a = 0;
readln (a);
while a <> 0 do
begin s: = s + а;
readln (a)
end;
Оператор цикла обратный пересчет работает аналогично оператору цикла прямого пересчета, только переменная цикла не возрастает с каждым шагом на единицу, а на единицу убывает. Оператор имеет вид:
for i: = n2 downto nl do оператор;
Для этого оператора должно также выполняться п2 ≥ n1.
При использовании в программе операторов цикла необходимо соблюдать следующие правила:
— внутри цикла может находиться другой цикл, но необходимо, чтобы циклы имели разные переменные и внутренний цикл полностью находился в теле внешнего цикла;
нельзя передавать управление в тело цикла, минуя заголовок (это значит, что метка и оператор goto с этой меткой должны находиться в теле цикла);
если требуется обойти группу операторов в теле цикла и продолжить цикл, т. е. выполнить его следующий шаг, то надо передать управление на замыкающий цикл end;
можно досрочно выйти из цикла, или используя оператор goto, или изменив параметр условия в операторах while и repeat так, чтобы цикл больше не выполнялся.
106
Вопросы и задания
Пусть тело цикла в программе Е7 такое же, как в программе Е6. Как будет работать программа Е7, если ввести два одинаковых числа а и b
Сколько раз выполнится оператор цикла repeat, если условие после слова until истинно при входе в "цикл?
Объясните, какая разница между условиями, записанными после слов while и repeat для одной и той же задачи.
Напишите программы вычисления сумм:
а) сорока слагаемых вида n-i, где i = 1, 2, 3, ..., 40, а n — данное число;
б) n слагаемых вида х + i, где х — данное число, a i меняется от 1 до n;
в) ста слагаемых, имеющих вид дроби (i + 1) / (i + 2);
г) n слагаемых вида (i + 1)2, где i= 1, 2, ..., n;
д) n слагаемых sin х + sin х2 + sin х3 + ... + sin хn;
е) n слагаемых sin х + sin2 х + sin3 х + ... + sinn х; ж) кубов п первых натуральных чисел.
Для различных вводимых с клавиатуры целых чисел найдите сумму положительных нечетных.
Напишите программы вычисления произведений:
а) а * (а + 1) * (а + 2) * ... * (а + п - 1);
б) а * (а - п) * (а – 2n) * ...* (а - n2);
в) (х-1)(х-2)(х-3)…(х-n);
г) 2 * 4 * 6 * ... * (2n);
д) (1 + sin 0.1) (1 + sin 0.2) ... (1 + sin 10);
е) всех чисел от 1 до 100 кратных 3, но не кратных 6; ж) n сомножителей вида (х + i)2.
Дано положительное число А. Найдите среди чисел 1,1 + 1/2, 1 + 1/2 + 1/3, ... первое, большее А.
Вводя числа с клавиатуры без ограничения их количества (конец ввода — число нуль), найдите сумму положительных и произведение отрицательных чисел.
9.
107
3.6. Массивы
В рассмотренных ранее примерах программ производилась обработка одиночных данных — значений простых переменных. При решении практических задач данные объединяются в различные структуры, наиболее простыми из которых являются массивы.
Массив — именованный набор с фиксированным количеством однотипных данных.
В массивы объединены результаты экспериментов, списки фамилий сотрудников, различные сложные структуры данных. Так, список из классного журнала 10 «А» является массивом. В массиве могут быть одинаковые данные, поэтому элементы массива различаются по своим порядковым номерам. Если каждый элемент имеет один порядковый номер, то такой массив называется одномерным, если два — то это таблица из строк и столбцов. Для таблиц первый номер элемента показывает строку, а второй — столбец, на пересечении которых находится элемент. Все строки таблицы имеют одинаковую длину.
Одномерный массив может быть числовой последовательностью с известным количеством членов. Так же, как и в последовательности, в массиве можно указать элемент с конкретным номером, например as, или записать общий вид элемента, используя в качестве индекса переменную и указывая диапазон ее изменения: аi,, i = 1, 2, ..., п.
Задачи на обработку массивов могут иметь различную формулировку. Например, начинаться со слов «Дано n чисел...», а далее говорится, что требуется сделать с этими числами. Чтобы решить такую задачу на компьютере с использованием языка программирования Паскаль, необходимо выполнить следующее:
определить, какие числа даны: целые или вещественные (если об этом конкретно не сказано, то лучше считать их вещественными);
назвать весь массив одним именем, которое будет использоваться для каждого элемента, только к нему добавится номер этого элемента (индекс);
описать массив в разделе переменных var, тем самым отведя место в памяти для массива;
ввести данные в память.
108
В описании массива имеется специальное слово array (массив), после которого в квадратных скобках через две точки указывается диапазон изменения номеров элементов, затем слово of (из) и пишется тип данных массива. Встретив описание массива, транслятор отводит для него столько последовательных ячеек, сколько указано в квадратных скобках, и такого формата, каков тип данных массива. Эту память в программе можно использовать целиком или частично, вычисляя значения элементов массива или вводя их с клавиатуры (либо с диска). Чаще всего номера элементов меняются от 1 до заданного числа п. Поместив значение п в разделе констант (const), в описании можно указать в качестве переменной и последнее значение (верхнюю границу) номера элемента массива.
Пример описания:
const n = 10;