Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Оператор повтора (цикла) FOR




Лабораторная работа 8

Разработка циклических программ с заданным числом повторений

Цель работы

Целью работы является освоение процесса разработки циклических программ с заданным (известным) числом повторений на языке Turbo Pascal.

Задание на лабораторную работу

Разработать программы с использованием оператора повтора (цикла) FOR

Требования к программе

 

Программа должна выводить:

сообщения-подсказки перед вводом данных;

сообщение о выводе результатов;

результаты в виде: <Имя_переменной> = <Значение_переменной>.

Порядок выполнения работы

1. Получить вариант задания (п. 3.6).

2. Изучить правила использования оператора FOR для разработки циклических программ (п. 3.5).

3. Составить и отладить программу в соответствии с вариантом задания.

4. Ответить на контрольные вопросы (п. 3.8).

5. Оформить отчет.

Оператор повтора (цикла) FOR

Для программирования циклических вычислительных процессов с известным числом повторений в языке Turbo Pascal предназначен оператор повтора (цикла) FOR. Оператор FOR состоит из заголовка и тела цикла. Синтаксическая диаграмма для данного оператора показана на рисунке 1.

 

Рисунок 1 – Синтаксическая диаграмма оператор повтора FOR

 

Как видно из диаграммы, оператор FOR может быть представлен в двух форматах:

For i:=N1 to N2 do S1;...

или в форме

For i:=N1 downto N2 do <оператор>;...,

где For … do – заголовок цикла;

i – управляющая переменная дискретного типа (Integer, Char, Boolean и др.); имя переменной может быть любым допустимым идентификатором,

N1, N2 – выражения, определяющие начальное и конечное значения управляющей переменной,

S1 – простой или составной оператор (тело цикла).

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

1) значению управляющей переменной присваивается начальное значение (i:=N1);

2) значение i сравнивается с конечным значением N2; если i <= N2, то выполняется оператор S1, затем переменная i принимает следующее значение из упорядоченной последовательности и п. 2 повторяется, в противном случае (т.е. если i > N2) передается управление оператору, следующему за оператором S1.

При использовании второй формы оператора FOR:

1) значению управляющей переменной присваивается начальное значение (i:=N1);

2) значение i сравнивается с конечным значением N2; если i >= N2, то выполняется оператор S1, затем переменная i принимает следующее значение из упорядоченной последовательности и п. 2 повторяется, в противном случае (т.е. если i < N2) передается управление оператору, следующему за оператором S1.

Ограничения оператора FOR:

· выражения N1 и N2 должны иметь тип, совместимый с типом управляющей переменной;

· в теле цикла запрещается изменять значение управляющей переменной;

после окончания работы оператора FOR значение управляющей переменной становится неопределенным, если только выполнение оператора FOR не было прервано оператором условного или безусловного перехода.

Алгоритм подсчета суммы с использованием цикла с известным числом повторений. При подсчете суммы с использованием цикла с известным числом повторений (оператора FOR) следует обратить особое внимание на:

1) первоначальное значение суммы

S:=0 – так называемое обнуление;

2) присваивание значению управляющей переменной i начального значения, выбор конечного значения управляющей переменной;

3) подсчет суммы в цикле: S:=S+{meкyщee значение};

4) счетчик i (управляющая переменная увеличивается на единицу от начального значения до конечного значения, т.е. i = i+ 1, при этом при каждом новом значении i исполняется оператор внутри цикла).

Пример 1. Найти сумму N элементов натурального ряда чисел:

Решение. Блок-схема алгоритма показана на рисунке 2.

 

  Рисунок 2 – Блок-схема алгоритма к примеру 1  
 
– ввод конечного значения управляющей переменной (здесь – количество элементов натурального ряда чисел);
 
– начальные условия;
 
 
– начало цикла;
 
 
– тело цикла;
 
 
– конец цикла;
 
 
 
– вывод результата.
 
 
 
 
 
 

 

Текст программы может выглядеть следующим образом:

program zadacha1; {вычисление суммы натуральных чисел}

var

n,s,i:integer;

begin

writeln (‘Введите натуральное число N=');

readln (n);

s:=0;

for i:=1 to n do

s:=s+i;

writeln (‘сумма=’, s)

end.

Алгоритм подсчета произведения с использованием цикла с известным числом повторений. При подсчете произведения с использованием цикла с известным числом повторений (оператора FOR) следует обратить особое внимание на:

1) первоначальное значение произведения

р:=1;

2) присваивание значению управляющей переменной i начального значения, выбор конечного значения управляющей переменной;

3) подсчет произведения в цикле:

р:=р* {множитель}.

Классическим примером циклического алгоритма служит алгоритм для вычисления степени числа Y=Xn. Этот алгоритм может быть реализован на основе операции умножения. Например, табличное представление такого алгоритма, отражающего зависимость Y от X при изменении показателя степени n от 1 до 3, представлено в таблице 1. В этой таблице показаны также рекуррентные соотношения между Y и X, определяющие как на каждом шаге зависит значение Y от значения X и от значения Y, вычисленного на предыдущем шаге.

 

Таблица 1 – Рекуррентные соотношения при вычислении Y=Xn

Y[n] Рекуррентные соотношения
Y[1]=Х Y=X
Y[2]=X*X или Y[2]=Y[1]*X Y=X*X или Y=Y*X
Y[3]=X*X*X или Y[3]=Y[2]*X Y=X*X*X или Y=Y*X

Пример 2. Вычислить аn (п > 0).

Решение. Входные данные: a – вещественное число, которое необходимо возвести в целую положительную степень n.

Выходные данные: р (вещественное число) – результат возведения вещественного числа а в целую положительную степень n.

Промежуточные данные: i – целочисленная переменная, принимающая значения от 1 до n с шагом 1, параметр цикла.

Известно, что для того чтобы получить целую степень n числа а, нужно умножить его само на себя n раз. Результат будет храниться в участке памяти с именем р. При выполнении очередного шага цикла из этого участка предыдущее значение будет считываться, умножаться на основание степени а и снова записываться в участок памяти р. Цикл выполняется n раз.

Блок-схема приведена на рисунке 3.


 

  Рисунок 3 – Блок-схема алгоритма к примеру 2  
 
– ввод вещественного числа a и значения степени n;
 
– начальные условия (для вычисления произведения);
 
 
– начало цикла;
 
 
– тело цикла (вычисление степени числа a на основе операции умножения числа самого на себя n раз в цикле);
 
– конец цикла;
 
 
– вывод результата.
 
 
 
 
 
 
 
 

Текст программы может выглядеть следующим образом:

var

a,p:real;

i,n:word;

begin.

write ('Введите основание степени а=');

readln (a);

write ('Введите показатель степени n=');

readln (n),

р:=1; {начальные условия}

for i:=l to n do

p:=p*a;

writeln ('P=', P:5:2);

readln;

end.

Алгоритм обработки данных с использованием вложенных циклов. Структура программы с вложенными циклами образуется в том случае, если тело цикла представляет собой один или несколько других циклов. Цикл, охватывающий другие циклы, называется внешним, а входящие в его состав – внутренними циклами. Правила организации как для внешнего, так и для внутреннего циклов такие же, как и для простого цикла. Параметры этих циклов изменяются не одновременно, т.е. при одном значении параметра внешнего цикла параметр внутреннего цикла принимает по очередности все свои значения. Кроме того, внутренний цикл также может представлять собой вложенную структуру цикла и т.д.

При использовании конструкции с вложенными циклами необходимо придерживаться следующих правил:

1) внутренний (вложенный) цикл должен полностью укладываться в рабочую часть внешнего цикла;

2) нельзя использовать одну и ту же переменную в качестве параметров внешнего и внутреннего циклов;

3) выполнение операторов, являющихся телом внутреннего цикла, не должно приводить к изменению значения параметра внешнего цикла.

Наиболее часто конструкции с вложенными циклами применяются при решении задач обработки двумерных массивов (матриц).

3.6 Определение и использование данных типа "массив"

Массивы относят к структурированным типам данных. Массив представляет собой упорядоченный выбор фиксированного количества некоторых значений (компонент массива). Все компоненты должны быть одного и того же типа, который называют типом компонент или базовым (для массива) типом. Массивы могут иметь более одного измерения. Количество измерений ограничивается только предельной длиной всего массива – не более 65520 байт.

Каждому используемому в программе массиву должно быть дано своё имя. Если массив объявлен, то к любому его элементу (компоненту массива) можно обратиться, указав имя массива и индекс элемента в квадратных скобках. Например: А [1]; B [3,4].

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

 

 

Рисунок 4 – Синтаксическая диаграмма объявления массива

 

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

а)

type

<имя типа данных> = Array[<список типов индексов>] of <тип данных, которые должны содержаться в массиве>;

var <список переменных>: <имя типа данных>;

б)

var

<список переменных>: Array[<список типов индексов>] of <тип данных, которые должны содержаться в массиве>;.

Массивы могут иметь вид списка (одномерный массив), матрицы (двумерный массив) и т.д. (трех-, четырех-, n-мерный); при этом должны использоваться 1, 2 и т.д. индексов.

Например:

...

type

digit = array [0..9] of char;

{ digit - новый тип данных - "одномерный массив"; 0..9 - тип индекса (диапазонный или ограниченный тип); char - тип данных, которые должны содержаться в массиве}

matrix = array [byte, byte] of real;

{ matrix - новый тип данных - "двумерный массив"; byte - тип индексов}

var

A, B: digit; {A,B - переменные типа digit}

M1, M2: matrix; {M1,M2 - переменные типа matrix}

Cube: array[1..5, 'A'..'H', boolean] of char;

{ Cube - переменная типа "трехмерный массив" }

...

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

...

readln(A[1]); {ввод с клавиатуры значения элемента 1 массива A}

A[3]:='F'; {присвоение элементу 3 массива A значения 'F'}

M1[i,j]:=M2[j,i]-5.55;{вычисление значения элемента с индексами i,j массива M1}

writeln(M1[k, n]); {вывод на экран значения элемента массива M1}

...

Ввод и вывод значений элементов массивов может выполняться с использованием оператора FOR, например:

writeln('Введите количество элементов массива (не более 10)');

readln(N);

for i:=0 to N do

begin

write(i,'-й элемент:');

readln(B[i])

end;

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

...

writeln('Введите количество элементов матрицы (<= 255 х 255)');

readln(k,n);

for i:=0 to k do

for j:=0 to n do

begin

write(i,' ',j,'-й элемент: ');

readln(M1[i,j])

end;

...

writeln('Результат формирования матрицы');

for i:=0 to k do

begin

for j:=0 to n do write(M2[i,j],' '); {вывод i-й строки}

writeln

end;

...

Пример 3. Вычислить сумму положительных элементов каждой строки матрицы А(10 х 8).

Решение. Для вычисления суммы положительных элементов одной строки матрицы необходимо:

• организовать цикл с целью перебора всех элементов строки, поэтому параметром этого цикла следует выбрать номер столбца j;

• перед циклом нужно задать начальное значение суммы S = 0;

• после окончания цикла результаты необходимо вывести на экран

Примечание: если эти действия повторять во внешнем цикле, изменяя индекс строки i, то будут вычислены все десять сумм.

Схема программы решения этой задачи представлена на рисунке 5. Программа на языке Паскаль имеет следующий вид:

 

 

Рисунок 4 –Схема программы к примеру 3

 

Текст программы может выглядеть следующим образом:

Обработка матриц

Ввод/вывод значений элементов матрицы

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных