
- •Создание программ с использованием циклов. Работа с массивами
- •Введение
- •Лабораторная работа №6. Оператор цикла с параметрами
- •Выполнение лабораторной работы
- •Методические указания к выполнению лабораторной работы
- •Язык программирования Pascal
- •Var // объявление переменных
- •Лабораторная работа №7. Оператор цикла с предусловием
- •Выполнение лабораторной работы
- •Методические указания к выполнению лабораторной работы
- •Язык программирования Pascal
- •Var // объявление переменных
- •Лабораторная работа №8. Одномерный массив
- •Выполнение лабораторной работы
- •Методические указания к выполнению лабораторной работы
- •Язык программирования Pascal
- •Var // объявление переменных
- •Лабораторная работа №9. Двухмерный массив. Матрица.
- •Выполнение лабораторной работы
- •Методические указания к выполнению лабораторной работы
- •Язык программирования Pascal
- •Int a[2][3]; /* представлено в виде матрицы
- •Int a[100][100]; // матрица
- •Библиографический список
Выполнение лабораторной работы
Для выполнения работы необходимо:
формализовать задачу;
разработать алгоритм решения задачи;
составить блок-схему алгоритма;
выбрать и обосновать представление входных, промежуточных и выходных данных;
произвести кодирование;
разработать набор тестов, на которых будет проверяться программа;
продемонстрировать работу программы на наборе тестов;
оформить работу и отчитаться по ней.
Методические указания к выполнению лабораторной работы
Задание
Дано целое число N >2. Сформировать и вывести целочисленный массив размера N, содержащий N первых элементов последовательности чисел Фибоначчи Fk:
F1 = 1, F2 = 1, FK = FK−2 + FK−1, K = 3,4,...
Выполнение
Отличительная особенность массивов заключается в том, что все их элементы принадлежат к одному типу. Эти элементы можно легко упорядочить и обеспечить доступ к любому из них простым указанием его порядкового номера. Для обработки элементов массива используется оператор цикла.
Этап 1. Формализация. Задача заключается в генерации значений последовательности Фибоначчи и помещении их в элементы массива. Генерация новых элементов последовательности проводится по рекуррентному соотношению FK = FK−2 + + FK−1 (элемент равен сумме двух предыдущих элементов). Первый и второй элементы равны 1.
Третий элемент: F3 = F2 + F1 =1 + 1 = 2.
Четвёртый элемент: F4 = F3 + F2 = 2 + 1 = 3.
Пятый элемент: F5 = F4 + F3 = 3 + 2 = 5.
И т.д.
Для генерации это соотношение помещается внутрь цикла. Для вывода элементов массива также используется цикл.
Этап 2. Декомпозиция. Производим декомпозицию задачи — выделяем действия. Определяем, что для решения задачи необходимо выполнить следующие действия:
1. Ввести количество элементов N.
2. Присвоить первому и второму элементу в качестве значений единицу.
3. В цикле от 3 до N по рекуррентному соотношению рассчитать значение элемента.
4. Присвоить значение элементу массива.
5. В цикле от 1 до N вывести значения элементов массива на экран.
Этап 3. Алгоритмизация. Составляем алгоритм решения задачи. Используем для записи алгоритма форму блок-схемы.
Блок-схема алгоритма выглядит следующим образом:
Этап 4. Кодирование. Переводим разработанный алгоритм на язык программирования — составляем программу. Новым в задании является описание и использование массива. Для него в языках программирования предусмотрены специальные ключевые слова.
Язык программирования Pascal
Описание типа массива в Pascal задается следующим образом:
<имя типа> = array [ <сп.инд.типов> ] of <тип>;
Здесь <имя типа> - правильный идентификатор; array, of - зарезервированные слова {массив, из); <сп.инд.типов> - список из одного или нескольких индексных типов, разделенных запятыми; квадратные скобки, обрамляющие список, - требование синтаксиса;<тип> - любой тип Pascal.
Определить переменную как массив можно и непосредственно при описании этой переменной, без предварительного описания типа массива, например:
var
a,b : array [1..10] of Real;
Обычно в качестве индексного типа используется тип-диапазон, в котором задаются границы изменения индексов.
В Pascal можно одним оператором присваивания передать все элементы одного массива другому массиву того же типа, например:
var
a,b : array [1..5] of Single;
begin
а := b;
end.
После этого присваивания все пять элементов массива а получат те же значения, что и в массиве b.
Над массивами не определены операции отношения. Нельзя, например, записать
if а = b then ...
Сравнить два массива можно поэлементно, например:
var
a,b : array [1..5] of Single;
eq : Boolean;
i : Byte;
begin
eq := True;
for i := 1 to 5 do
if a[i] <> b[i] then eq := False;
if eq then begin
…
end;
end.
Руководствуясь блок-схемой, записываем алгоритм на языке Pascal:
begin // начало программы
// сообщение пользователю о цели программы
writeln('Programma generiruyushaya N chisel posledovatelnosti Fibonachi.');
// сообщение пользователю о необходимости ввода переменной
write('Vvedite N: ');
readln(N); // ввод переменной
// присваиваем первым двум элементам в качестве значений единицу
F[1]:=1;
F[2]:=1;
// рассчитываем значения элементов последовательности Фибоначчи
for i := 3 to N do // заголовок цикла
begin // начало группы операторов, выполняемых в цикле
F[i]:=F[i-1]+F[i-2];
end; // конец группы операторов, выполняемых в цикле
// выводим массив на экран
for i := 1 to N do // заголовок цикла
begin // начало группы операторов, выполняемых в цикле
writeln(F[i]); // вывод числа
end; // конец группы операторов, выполняемых в цикле
readln; // задерживаем закрытие консольного окна
end. // конец программы
По условию задачи все переменные должны быть объявлены как целые числа, следовательно, в разделе объявления переменных программы, располагающемся перед началом программы, должна содержаться следующая запись: