Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодУказdDelphi.doc
Скачиваний:
19
Добавлен:
10.05.2015
Размер:
378.37 Кб
Скачать

3.7. Циклы

Цикл это выполнение определенного набора команд некото­рое количество раз. Различают три вида команд циклов:с пара­метром, с предусловием и с после условием.

Команда цикла с параметром (for). В языке программиро­вания Паскаль есть два вида командыfor. Рассмотрим первый

For <параметр> := <выражение 1>to< выражение 2>do < оператор 1>;

Параметр – это переменная целого, символьного, логического или перечислимого типов, а выражения 1 и 2 задают начальное и конечное значения параметра.

Действие команды. Параметру цикла присваивается значение вы­ражения 1. Если оно меньше (равно), чем значение выражения 2, то выполняется оператор 1. После этого значение параметра автома­тически увеличивается на единицу, и оно снова сравнивается со значением выражения 2 и т. д. Когда значение параметра станет больше, чем значение выражения 2, то выполняется следующий после цикла оператор.

Пример. Пустьs= 0. После выполнения команды

for i := 4 to 6 do begin s := s + i; z := 2 * i end;

переменная sполучит значение 0+4+5+6=15, а переменнаяz-12.

Рассмотрим второй вид команды цикла for:

for <параметр> := <выражение 1>downto <выражение 2>do <оператор 1>;

Эта команда действует, как и предыдущая, но шаг изменения параметра равен -1.

Значение параметра в середине цикла изменять нельзя!

Команда цикла с предусловием(while). Командаwhileвы­глядит так:

while <логическое выражение>do <оператор 1>;

Действие команды. Пока значение логического выражения ис­тинно, выполняется оператор 1. Истинность логического выражения определяет условие продолжения цикла.

Пример. Пусть переменные х,sравны х = 4,s= 0. После вы­полнения команды

whileх <= 8dobegins:=s+x;x:=x+ 1end;

они получат значения s=4+5+6+7+8= 30,x = 9.

Вопросы для самопроверки:

1.Вычислите x = 10! (факториал) с помощью трех различных операторов цикла.

2. Дано 100 вещественных чисел. Вычислить разность между максимальным и минимальным из них.

3. Вычислить S- сумму порядковых номеров всех букв, входящих в слово «Delphi»; в слово, введенное пользователем.

4. Подсчитать k-количество цифр в десятичной записи целого неотрицательного числаn.

3.8. Массивы

Массив (array) - это конечный набор элементов одного (ба­зового) типа, которые сохраняются в последовательно размещён­ных ячейках оперативной памяти и имеют общее имя.

В математике понятию массив соответствуют понятия вектора и матрицы. Различают одно- и многомерные массивы. Двумерный массив данных — это таблица, которая состоит из нескольких строк.

Общий вид конструкции описания типа массива такой:

array [<размер>]of<имя базового типа>;

Размер (количество элементов) массива чаще всего задают в виде диапазона или именем некоторого перечислимого типа дан­ных.

Описать массив можно в разделе описания типов type, в разде­ле константconst или в разделе объявления переменныхvar. Имена типов массивов и переменных-массивов указывает пользо­ватель.

Пример. Опишем тип массиваmymas, объявим постоянный массив (массив-константу)zatratyтипаmymasи переменные — массивыA,alтипаmymasи массивB, состоящий из 7 элемен­тов целого типа, массивC— из 100 элементов-символов.

type mymas = array [1..10] of real;

day = (mon, tue, wed, the, fri, sat, sun);

constzatraty: mymas =(1.2, 1, 1, 2, 8, 2.4, 8.7, 3, 7, 1.3);

var a, al : mymas;

b : array[day] of integer;

с : array [1..100] ofchar;

Над массивами определена единственная команда присваива­ния. Например, команда а := alвсе значения массиваalприсвоит соответствующим элементам массива а. Все остальные опера­ции определены только над элементами массива. Доступ к элементам массива осуществляется так:

<имя массива> [ <номер элемента> ]

Номер (его часто называют индексом) записывают в квадрат­ных скобках, например, а[1] - первый элемент массива a,b[tue] -второй элемент массиваB.

Пример. Элементам описанных выше массивов можно присво­ить значения так:

а[1] := 15.1; b[tue] := 3; с[1] := ‘V’; с[2] := ‘b’

Элементы массива zatratyимеют такие значения:

zatraty[l] = 1.2; zatraty[2] = 1; ...; zatraty[10] =1.3.

Пример. Создать массив из первых ста положительных целых чисел и вычислить сумму всех его элементов (5050) можно так:

s := 0;

for i := 1 to 100 do

begin

a[i] := i;

s := s + a[i]

end;

label1.caption:=inttostr(s);

Задачи поиска в массиве конкретных данных решают методом сканирования всех элементов массива при помощи команд циклаfor, while илиrepeat и команды ветвления, в которой указывают условие поиска.

Двумерные массивы. Двумерные массивы предназначены для работы с табличными данными. В двумерном массиве элемен­ты определяются именем массива и двумя индексами: первый ин­декс указывает на номер строки, а второй - на номер столбца, на пересечении которых находится элемент. Например, р[1, 2] - вто­рой элемент первой строки массива р.

Рассмотрим примеры объявления массива-константы bal, кото­рый состоит из 2 строк и 4 столбцов, массиваsutki, содержащего 24 строки по 60 элементов целого типа, двухмерного массива р размером 9 на 9 (т.е. с 9*9=81 элементом).

const n = 9;

bal: array [1..2, 1..4] of integer=((4, 3, 5, 3), (4, 4, 5, 3));

var sutki: array [0..23] of array [0..59] of integer;

p : array [l..n, l..n] of integer;

Элементы массива balпринимают такие значения:

bal[l, 1] = 4, bal[l, 2] = 3, ..., bal[2, 3] - 5, bal[2, 4] = 3.

Равносильны следующие команды:

sutki[16][20]:=5; иsutki[16,20]:=5;

Вопросы для самопроверки:

1. Может ли массив содержать один элемент? А ни одного?

2. Можно ли во время выполнения программы изменять размер массива (количество элементов в нем)?

3. Приведите пример инициализации двумерного массива -константы.