Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник_Часть_1.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
974.85 Кб
Скачать

Пример составления таблицы переменных

Имя

Тип

Начальное значение

Смысл

Amin

100

Минимальное значение интервала

Amax

150

Максимальное значение интервала

А

Real

Число, вводимое с клавиатуры

Summa

Real

Сумма чисел

{Текст программы}

program while_2;

const

Amin=100; Amax=150;

Var a,Summa:real;

begin

Summa:=0;

Writeln(' Введите А ');

Readln (A);

while A>=0 {заголовок цикла}

do begin

if (A>100) and (A<150)

then Summa:=Summa+A;

Inc (Summa, a);

Readln (A) {читаем новое значение А}

end; {конец цикла}

Writeln(' Значение суммы = ',Summa)

end.

5.7.3. Оператор цикла с постусловием

Синтаксическая диаграмма цикла с постусловием изображена на рис. 5.4.

Рис. 5.4. Синтаксическая диаграмма цикла с постусловием

Оператор – любой оператор Паскаля.

Выражение – выражение логического типа.

Данный оператор аналогичен оператору цикла с предусловием. Отличия:

1) условие проверяется после выполнения оператора, следовательно, хотя бы один раз оператор выполнится;

2) цикл прекращает выполняться, когда значение выражения равно true (истина). Если результат логического выражения false (ложь), то тело цикла активизируется (выполняется) еще раз.

Факториал n! с помощью цикла Repeat можно вычислить следующим образом:

{фрагмент программы}

i := 1;

f:=1;

readln (n);

repeat

f:=f*i;

inc(i)

until i > n;

П р и м е р. С клавиатуры вводятся числа. Найти сумму этой последовательности. Как только введено число большее 999, суммирование выполнить последний раз и выдать результат на печать.

А л г о р и т м:

1. Сумма = 0.

2. Открываем цикл.

2.1. Ввод Х.

2.2. Summa = Summa + X.

3. Конец цикла; проверка X > PRK.

4. Печать суммы.

Перечень используемых переменных приведен в табл. 5.2.

Таблица 5.2

Таблица переменных

Имя

Тип

Начальное значение

Смысл

PRK

Константа

999

Признак конца цикла

Summa

Real

0

Cумма чисел

Х

Real

0

Текущее значение

{Программа подсчета суммы}

program sum;

const

PRK = 999;

Var

X,Summa:real;

Begin

Summa:=0;

repeat

readln(X);

Summa:=Summa+X

until X>PRK;

writeln(Summa:10:4)

end.

6. Структурированные типы данных

6.1. Массивы

Массив представляет собой структуру, состоящую из фиксированного числа компонент одного типа. В качестве компонент можно использовать как ранее описанные типы, так и следующие: массивы, записи, множества, указатели и т. п. Число элементов в массиве фиксируется при описании и далее при выполнении программы не меняется.

Определение типа, значения которого являются массивами, выполняется следующим образом:

TYPE <имя типа> = ARRAY[<диапазон первого индекса>,...,

<диапазон n-го индекса>] OF <тип компонент>;

Количество индексов n определяет размерность массива, а сами индексы разделяются запятыми и заключаются в квадратные скобки.

П р и м е р

TYPE

MATR=ARRAY[1..2,1..12] OF REAL;

VAR

A,B,C:MATR;

Массив можно описать в разделе VAR следующим образом:

<идентификатор>: ARRAY [<диапазон первого индекса>,...,

<диапазон n-го индекса>] OF <тип компонент>;

П р и м е р

VAR

A,B,C:ARRAY[1..10] OF INTEGER;

Для обращения к элементам массива используются конкретные значения индексов. Индекс представляет собой выражение любого простого (скалярного) типа (кроме REAL). К примеру, оператор B[3] := 10; присваивает третьему элементу одномерного массива с именем B значение 10.

П р и м е р

Пусть двумерный массив описан следующим образом:

VAR A : ARRAY[1..2,1..4] OF INTEGER; а в памяти ЭВМ записана таблица чисел, представляющая этот массив:

17 11 4 5

22 8 16 12

Все элементы в таблице имеют тип Integer. При обращении к элементам матрицы А первый индекс указывает номер строки таблицы (изменяется в данном случае от 1 до 2), второй – номер столбца (в нашем примере изменяется от 1 до 4). Если задать оператор присваивания в виде X:=А[2,3]; то после его выполнения значение некоторой переменной X будет равно 16.

Ввод и вывод значений элементов массива производится поэлементно.

Рассмотрим несколько типичных задач, связанных с применением массивов.

1. {Программа, позволяющая найти сумму элементов одномерного массива}

program msg1;

const n=15; {число элементов массива}

var

a:array[1..n] of real;

summa:real;

begin

summa:= 0;

for i:=1 to n

do begin

readln(a[i]);

summa:=summa+a[i]

end;

writeln(‘сумма ’,n,‘ элементов массива равна ’,summa)

end.

2. {Программа поиска наибольшего элемента одномерного массива и его порядкового номера}

program msg;

const n=20;

var

a:=array[1..n] of real;

amax: real;