Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Рабочая тетрадь Паскаль

.pdf
Скачиваний:
166
Добавлен:
30.03.2015
Размер:
1.61 Mб
Скачать

Рабочая тетрадь по программированию. Паскаль

case of

;

;

;

;

end;

end.

Турнир по программированию - http://compilers.infoznaika.ru/

21

Рабочая тетрадь по программированию. Паскаль

Цикл с параметром.

Рассмотрим следующую простую задачу: требуется вычислить сумму целых чисел от М до N путем прямого суммирования. Здесь M и N — целые числа.

Введем новый тип циклической структуры, который будет называться

циклом с параметром, или цикл-для. Здесь целая переменная i

последовательно принимает значения в диапазоне от М до N. При каждом значении i выполняется тело цикла. После последнего выполнения цикла при I = N происходит выход из цикла на продолжение алгоритма. Цикл выполняется хотя бы один раз, если M ≤ N, и не

выполняется ни разу при М > N.

Program Summering;

Var i, M, N, Summa: Integer;

Begin

Write('M=');

ReadLn(M);

Write('N=');

ReadLn(N);

Summa:=0;

For i:=M To N Do

Summa:=Summa+i;

WriteLn('Сумма равна', Summa)

End.

В программе используется оператор цикла For, синтаксическая диаграмма которого представлена:

Турнир по программированию - http://compilers.infoznaika.ru/

22

Рабочая тетрадь по программированию. Паскаль

Выполнение оператора For в происходит по следующей схеме:

1.

2.

3.

4.

Как известно, результат суммирования целых чисел не зависит от порядка суммирования. Например, в рассматриваемой задаче числа можно складывать и в обратном порядке, т.е. от N до М (N М). Для этого можно использовать второй вариант оператора цикла For:

Summa:=0;

For i:=N DownTo M Do

Summa:=Summa+i;

Слово DownTo буквально можно перевести как «вниз до». В таком случае параметр цикла изменяется по убыванию, т.е. при каждом повторении цикла параметр изменяет свое значение на предыдущее. Тогда ясно, что цикл не выполняется ни разу, если N < М.

Турнир по программированию - http://compilers.infoznaika.ru/

23

Рабочая тетрадь по программированию. Паскаль

Работая с оператором For, учитывайте следующие правила:

параметр цикла не может иметь тип Real;

в теле цикла нельзя изменять переменную «параметр цикла»;

при выходе из цикла значение переменной-параметра является неопределенным.

В следующем примере в качестве параметра цикла For используется символьная переменная.

Пример 2. Требуется получить на экране десятичные коды букв латинского алфавита.

For С : = ' а ' То ' z ' Do

Write(С, '-' , Ord(C));

Здесь переменная с имеет тип Char.

Турнир по программированию - http://compilers.infoznaika.ru/

24

Рабочая тетрадь по программированию. Паскаль

Оператор WHILE

Рассмотрим синтаксическую диаграмму оператора циклпока, или цикл с

предусловием:

Сначала вычисляется

.

Здесь <Оператор> может быть как простым, так и составным.

Пример 1. В следующем фрагменте программы на Паскале вычисляется сумма конечного числа членов гармонического ряда:

Суммирование прекращается, когда очередное слагаемое становится меньше е или целая переменная достигает значения Maxint.

S:=0;

I : = 1 ;

While (1/I>=Eps) And (I<MaxInt) Do

Begin

S:=S+1/I;

I:=I+1

End;

Турнир по программированию - http://compilers.infoznaika.ru/

25

Рабочая тетрадь по программированию. Паскаль

Одномерные массивы

Массив – структурированный тип данных, образованный из одного и того же типа.

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

а1 , а2 , а3 , ... , аn

Одномерный массив можно представить в виде таблицы:

1 3 5 7 14 8

a[1] a[4]

Массив а состоит из

 

элементов:

 

.

Массивы в среде Pascal объявляются следующим образом в разделе описания переменных:

Var <идентификатор>: Array*<тип индекса>+ Of <тип элементов>;

В качестве индекса употребляется интервальный тип, например:

Var T: Array[1..12] Of Real;

то есть последовательные элементы этого массива располагаются следующим образом: a*1], a[2], a*3+, … , a[12].

Приведите свои примеры задания одномерного массива:

Var

 

: Array[

] Of

;

 

 

 

 

 

 

 

 

 

Var

 

: Array[

] Of

;

 

 

 

 

 

 

 

 

 

массива называется его размерностью.

Турнир по программированию - http://compilers.infoznaika.ru/

26

Рабочая тетрадь по программированию. Паскаль

Чаще всего массивы обрабатываются в цикле for. Так, для того, чтобы считать с клавиатуры массив из 10 элементов, следует написать следующий цикл:

for i:=1 to 10 do read(a[i]);

Аналогично производится распечатка массива, но нужно учитывать, что между элементами необходимо вставлять разделитель:

for i:=1 to 10 do write(a*i+, ‘ ’);

Пример 1. Заполнить массив чисел так, чтобы значения элементов совпадали с их индексами.

var

 

 

 

 

 

 

 

 

 

 

 

 

 

 

:

 

 

 

 

 

; //количество элементов массива

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

: array [

] of

; //массив

 

 

 

 

 

 

 

 

 

 

 

 

 

 

begin

;

 

 

 

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

for

 

 

 

 

 

to

 

 

do

 

 

 

 

 

 

 

 

 

 

 

 

;

 

 

end.

 

 

 

 

 

 

 

 

 

 

 

Элементы массива можно задать случайным образом, с использованием встроенного в язык программирования так называемого датчика случайных чисел. Для этого используется функция random и процедура randomize.

Процедура randomize предназначена для задания первого значения в данной последовательности.

Для получения целых случайных чисел из диапазона [0, n-1] используется вызов функции random с параметром n: random(n).

Пример 2. Заполнить случайным образом целочисленный массив М, состоящий из шести элементов от 0 до 9 включительно:

randomize;

Турнир по программированию - http://compilers.infoznaika.ru/

27

Рабочая тетрадь по программированию. Паскаль

for i:=1 to 10 do М[i]:= random(10);

Пример 3. Циклически сдвинуть элементы массива на одну позицию влево, а первый элемент поставить на последнее место.

var

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

:

 

 

 

 

 

 

 

 

;

 

 

 

 

 

 

: array [

 

 

] of

 

; //массив

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

:

 

 

 

 

 

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

begin

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

;

 

 

 

 

 

 

 

 

 

 

 

 

;

 

 

 

 

 

 

 

randomize;

 

 

 

 

 

 

 

 

 

 

 

 

 

for

to

 

do

;

 

 

 

 

 

 

 

 

 

 

;

 

 

 

 

 

 

 

for

to

 

do

;

 

 

 

 

 

 

 

 

 

 

;

 

 

 

 

 

 

 

for

 

to

 

 

do

 

 

;

 

end.

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример 4. Циклически сдвинуть элементы массива на одну позицию вправо, а первый элемент поставить на последнее место.

var

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

:

 

 

 

 

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

: array [

 

] of

 

 

; //массив

 

:

 

 

 

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

begin

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

;

 

 

 

 

 

 

 

 

 

 

 

 

;

 

 

 

 

 

 

 

 

 

for

 

to

do

 

 

;

 

 

 

 

 

 

 

 

 

 

 

;

 

 

 

 

 

 

 

 

 

for

 

 

 

 

 

 

 

do

;

 

 

 

 

 

 

 

 

 

;

 

 

 

 

 

 

 

 

 

For

 

to

do

 

 

;

 

 

end.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Турнир по программированию - http://compilers.infoznaika.ru/

28

Рабочая тетрадь по программированию. Паскаль

Двухмерные массивы (матрицы)

Массив – структурированный тип данных, образованный из одного и того же типа.

Двухмерный массив можно представить в виде таблицы:

 

 

1

3

5

7

14

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

0

4

3

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R[1,1]

 

 

 

 

 

 

 

 

 

 

 

R[2,4]

 

 

 

 

 

 

 

 

Массив R состоит из

 

 

элементов:

 

.

 

Если количество строк равно количеству столбцов массив называется

 

 

 

 

 

 

, в противном случае –

 

 

.

Двухмерные массивы в среде Pascal объявляются следующим образом в разделе описания переменных:

Var <идентификатор>: Array*<тип индекса>+ Of <тип элементов>;

В качестве индекса употребляется интервальный тип, например:

Var Н: Array[1..12, 1..4] Of Integer;

Приведите свои примеры задания двухмерного массива:

Var

 

: Array[

] Of

;

 

 

 

 

 

 

 

 

 

Var

 

: Array[

] Of

;

 

 

 

 

 

 

 

 

 

Как и одномерные массивы, матрицы обрабатываются в цикле for, но здесь используется два вложенных цикла. Рассмотрим пример считывания элементов матрицы с клавиатуры:

for i:=1 to 5 do begin

for j:=1 to 10 do

Турнир по программированию - http://compilers.infoznaika.ru/

29

end.
Пример 2. Сформировать квадратную матрицу следующего вида:
Турнир по программированию - http://compilers.infoznaika.ru/

Рабочая тетрадь по программированию. Паскаль

begin

read(a[i, j]) ; end;

readln;

end;

Аналогично производится распечатка массива, но нужно учитывать, что между элементами необходимо вставлять разделитель, а каждую новую строку переносить:

for i:=1 to 5 do begin

for j:=1 to 10 do begin

write(a*i, j+, ’ ’) ; end;

writeln;

end;

Пример 1. Дана матрица целых чисел размером 3х5. Вычислить сумму элементов матрицы.

var

 

 

 

m, n, i, j, s: integer;

 

 

 

a: array[

] of

;

begin

 

 

 

 

s:=0;

writeln(‘введите значения элементов матрицы: ');

for

to

 

 

do

 

 

//ввод матрицы с клавиатуры

 

for

 

 

 

 

to

 

do

;

 

 

 

 

 

 

 

 

 

 

 

 

for

 

to

 

 

do

 

 

//подсчет суммы элементов

 

for

 

 

 

 

to

 

do

 

;

writeln(s);

 

 

 

 

 

 

 

 

 

30