Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Тема: «Применение циклов While и



Repeat-Until при решении задач»

Цели работы

 Углубить знания о циклических операторах

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

число Фибоначчи определяется формулой f(n)=f(n-1)+f(n-2)
где f(0)=1, f(1)=1

Постановка задачи

Составить программу и блок-схему для решения каждой из следующих задач:

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

2. Дана непустая последовательность различных натуральных чисел, за которой следует 0. Определить порядковый номер наименьшего из них.

3. Найти первое число Фиббоначчи, большее m (m> 1).

4. Цилиндр объема единица, имеет высоту h. Определить радиус основания цилиндра для значений h, равных 0.5, 1, 1.5, …, 5.

Дополнительное задание

1. Найти число, полученное выписыванием в обратном порядке цифр заданного натурального числа num.

2. Указать сороковое число Фиббоначчи.

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

Тема: «Одномерные массивы»

Цели работы

 Закрепить умение работы с одномерными массивами

 Научиться определять необходимость применения массивов при решении задач

 Продолжить формирование логического и аналитического мышления, умения сравнивать факты и делать выводы

Методический материал

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

Например:

Type

Mas = array[1..1000] of integer;

Var

Voprosy, prav_otv: array[1..300] of shortstring;

otvety: array[1..300, 1..5] of shortstring;

fix, ans: Mas;

 

В приведенном притмере описания описаны тип массива под названием Mas, одномерные массивы Voprosy, prav_otv, двумерный массив otvety строкового типа и два массива fix, ans с элементами целого типа. Подобное описание можно использовать при создании проекта «Программа тестирования». Массивы Voprosy, otvety, prav_otv могут быть использованы для размещения в программе вопросов, вариантов ответов и правильных ответов в тестах для тестирования. Массивы fix, ans используются для определения случайного порядка вопросов, отобранных для тестирования. Элементы в этих массивах не повторяются по значению.

 

Пример. Создадим проект, в котором определяются два массива.

Первый массив типа, описанного выше Mas представляет собой массив случайных неповторяющихся целых чисел. Для этого массива через поля ввода задаются его размерность, т.е число элементов и максимальное значение для этих элементов. Например, в базе для тестирования имеются 500 вопросов, из них случайным образом отбираются 25. Тогда число элементов массива будет 25, а максимальное значение для элементов будет равно 500.

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

Выполним команду создания нового проекта. На форму разместим метки для соответствующих надписей, два поля ввода, два Мемо-поля, в которые будем выводить найденные массивы, и три кнопки. Первая с надписью «Найти массив» будет определять массив случайных неповторяющихся чисел. Вторая с надписью «Сортировать» будет отсортировывать элементы массива в порядке возрастания их значений. Такой массив позволяет нам убедиться в том, элементы массива не повторяются по значению. Третья кнопка предназначена для закрытия проекта.

Опишем в разделе типов тип Mas.

Глобально объявим переменные:

fix: mas; // массив случайных не повторяющихся чисел

rmax, ksl: integer;

// rmax – число элементов массива; ksl – максимальное значение элементов массива

Код кнопки «Найти массив»:

Var I, j, n: integer;

Yes: Boolean;

Begin

Memo1.clear;

rmax: =strtoint(edit1.text);

ksl: = strtoint(edit2.text);

for i: = 1 to rmax do

fix[i]: =0;

i = 1;

While i < =rmax do begin

n: = random(ksl) +1; // 1 прибавляется для исключения значения 0

yes: =false;

for j: =1 to I do

if fix[j]=n then begin

yes: =true; break;

end; //if

if not yes then begin

fix[i]: =n;

memo1.Lines.Add(inttostr(fix[i]));

inc(i);

end;

end; //while

end; // proc end; //if

 

Сортировка будет выполняться «пузырьковым» способом. При каждом проходе попарно сравниваются два рядом стоящих элемента. Если они не удовлетворяют условиям сортировки, то они меняются местами. Сортировка будет завершена, если при очередном проходе не было выполнено ни одной перестановки.

Код кнопки «Сортировать»:

Var

i, j, k: integer;

yes: Boolean;

begin

memo2.clear;

repeat

yes: =true; // Массив отсортирован

for i: = 1 to rmax-1 do

if fix[i] > fix [i+1] then

begin

yes: =false;

k: =fix[i];

fix[i]: =fix[i+1];

fix[i+1]: = k;

end; //if

until yes;

for i: = 1 to rmax-1 do

memo2.Lines.Add(inttostr(fix[i]));

end; // proc

 

СРСП

Добавьте в проект третье Мемо-поле и еще одну кнопку с надписью «Линейная сортировка». Выполните линейную сортировку массива. Суть линейной сортировки заключается в определении минимального (максимального) элемента, перемещении его на первое место и отсечении найденного элемента. В оставшейся части массива повторяется тот же самый процесс.

Рисунок 8

СРСП(3 часа)

Задание 1. Решить задачи и создать проекты для реализации решения задач.

Постановка задачи

Составить программу и блок-схему для решения каждой из следующих задач:

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

2. В последовательности чисел подсчитать количество элементов равных первому; последнему.

3. Даны два одномерных массива одинаковой длины. Получить третий массив сложение соответствующих элементов первых двух массивов.

СРС(3 часа)

Задание 2. Решить задачи и создать проекты для реализации решения задач дополнительного задания.

 

Дополнительное задание

Подсчитать сколько элементов одномерного массива не превосходят среднего значения всех элементов.

Лабораторная работа №9 (СРСП, СРС)

Тема: «Двумерные массивы»

Цели работы

 Закрепить умение работы с двумерными массивами

 Научиться определять необходимость применения массивов при решении задач

 Продолжить формирование логического и аналитического мышления, умения сравнивать факты и делать выводы

Постановка задачи

Составить программу и блок-схему для решения каждой из следующих задач:

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

2. Найти произведение всех элементов, которые не меньше элемента, стоящего во втором столбце и второй строке.

3. Дана действительная матрица размера 6х9. Найти среднее арифметическое наибольшего и наименьшего значений ее элементов.

Дополнительное задание

Найти сумму элементов квадратной матрицы, которые лежат выше главной диагонали.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-03-17; Просмотров: 969; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.028 с.)
Главная | Случайная страница | Обратная связь