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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



Цель работы

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

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

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

Вычисление заданной величины (суммы N слагаемых, произведения N сомножителей и т.п.);

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

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

См. пункт 1.3.

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

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

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

3. Составить и отладить программу вычисления заданной величины (суммы N слагаемых, произведения N сомножителей и т.п.) в соответствии с подпунктом "а" варианта задания.

4. Изучить правила определения и использования данных типа "массив" (ARRAY), (п. 3.6) и рекомендации по обработке массивов данных.

5. Разработать и отладить программы обработки данных с использованием двумерных массивов в соответствии с подпунктом "б" варианта задания.

6. Устно ответить на контрольные вопросы (п. 3.9).

7. Оформить отчет (см. п. 1.10)

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

Для программирования циклических вычислительных процессов с известным числом повторений в языке Turbo Pascal предназначен оператор FOR, который может использоваться в форме

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

или в форме

For i:=N1 downto N2 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 не было прервано оператором условного или безусловного перехода.

Пример программы вычисления температуры по Фаренгейту в зависимости от заданной температуры по Цельсию от 15 до 30 градусов. Перевод температуры выполняется по формуле F=C*1.8+32;

Program demoFor;

var

i: integer;

F: real;

begin

writeln(‘Температура по Цельсию и по Фаренгейту’)

for i:= 15 to 30 do {Заголовок цикла}

begin {Начало тела цикла}

F:=i*1.8+32;

writeln(i:2, F,6:2)

end {Конец тела цикла}

end.

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

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

а) 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:=1 to N do

begin

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

readln(B[i])

end;

...

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

readln(k,n);

for i:=1 to k do

for j:=1 to n do

begin

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

readln(M1[i,j])

end;

...

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

for i:=1 to k do

begin

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

writeln {переход на новую строку}

end;

...

Варианты заданий

1.а) Вычислить n!

б) Подсчитать количество нулевые элементов кортежа

в) Определить количество элементов матрицы, значения которых не превышают заданное число.

2.а) Вычислить .

б) Подсчитать сумму нечетных элементов кортежа

в) Найти минимальный элемент матрицы n´m.

3.а) Вычислить .

б) Заменить отрицательные элементы кортежа на 0.

в) Найти максимальный элемент матрицы.

4.а) Вычислить .

б) Найти сумму четных и нечетных по номеру элементов кортежа А(20)

в) Поменять местами минимальный и максимальный элемент матрицы.

5.а) Вычислить .

б) Вычислить разность элементов двух кортежей одинаковой размерности

в) Поменять местами два заданных элемента матрицы.

6.а) Вычислить .

б) Разделить четные по номеру элементы кортежа на 2 и умножить нечетные на 2.

в) Поменять местами две заданных строки матрицы.

7.а) Вычислить .

б) Вывести на печать номера элементов кортежа, значение которых равно p

в) Транспонировать матрицу А (5´5)

8.а) Вычислить .

б) Подсчитать количество отрицательных и положительных элементов кортежа.

в) Сформировать массив В, содержащий сумму элементов каждого столбца матрицы А.

9.а) Вычислить .

б) Заменить все элементы кортежа, значение которых больше "-3" и меньше "+3", на 0.

в) Поменять местами два заданных столбца матрицы.

10.а) Вычислить .

б) Найти сумму отрицательных и количество положительных элементов кортежа В(25).

в) Определить количество отрицательных элементов матрицы.

11.а) Вычислить

б) Переписать элементы кортежа А(20) в кортеж В(20) в обратном порядке.

в) Определить количество положительных элементов матрицы.

12.а) Вычислить .

б) Заменить отрицательные элементы кортежа на их квадрат.

в) Вычислить среднее арифметическое элементов матрицы.

13.а) Вычислить .

б) Переставить элементы кортежа в обратном порядке.

в) Вычислить произведение отрицательных элементов матрицы.

14.а) Вычислить .

б) Заполнить кортеж А случайными числами от 0 до 15 с помощью функции Random и подсчитать количество элементов кортежа, значение которых больше 7.

в) Вычислить сумму положительных элементов матрицы.

15.а) Вычислить .

б) Найти произведение нечетных по номеру элементов кортежа А(10).

в) Все отрицательные элементы матрицы возвести в квадрат.

16.а) Вычислить

б) Определить номер и значение минимального элемента кортежа

в) Сформировать массив B, содержащий максимальные элементы строк матрицы A.

17.а) Вычислить .

б) Всем четным по номеру элементам кортежа присвоить значение 0, а нечетным 1.

в) Сформировать массив B, содержащий суммы элементов строк матрицы A.

18.а) Вычислить

б) Вычислить сумму n членов геометрической прогрессии.

в) Вычислить сумму всех отрицательных элементов матрицы.

19.а) Вычислить .

б) Заполнить кортеж А случайными числами от 0 до 10 с помощью функции Random и подсчитать среднее арифметическое элементов кортежа.

в) Вычислить сумму элементов вспомогательной диагонали матрицы М(5´5)

20.а) Вычислить .

б) Определить номер максимального элемента кортежа

в) Вычислить сумму элементов главной диагонали матрицы.

 

Содержание отчета (см. п. 1.10)

3.9. Контрольные вопросы

1. Каково назначение оператора цикла FOR?

2. Каковы правила записи оператора цикла FOR?

3. Каковы алгоритмы работы оператора цикла FOR?

4. Какие циклы называются вложенными?

5. Какие ограничения наложены на оператор FOR?

6. Как определяются данные типа "массив"? Запишите примеры определения данных типа массив с использованием разделов type и var (или только var).

7. Какие типы могут иметь индексы?

8. Как получить доступ к элементам одно-, дву-, n-мерного массива?

9. Как можно организовать ввод (вывод) элементов одно-, дву, n-мерного массива?

Лабораторная работа №4



Поделиться:


Последнее изменение этой страницы: 2016-04-26; просмотров: 344; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.58.112.1 (0.028 с.)