Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Пример формального построения цикла





Рассмотрим задачу. Допустим, необходимо подсчитать сумму ряда Остаток ряда, начиная с члена меньше некоторого параметра eps, нужно отбросить.

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

На каждом шаге цикла должны быть справедливы следующие условия (инвариант цикла). Обозначим i номер шага цикла. Тогда слагаемое, которое нужно прибавить, определяется по формуле: . Переменная, в которой мы будем накапливать сумму, должна попадать под условие: .

На нулевом шаге для выполнения инварианта переменные должны иметь следующие значения: i = 0; p = 1; s = 1 – это предусловие цикла.

Цикл нужно закончить, при p < eps – условие окончания цикла, или цикл должен продолжаться до тех пор, пока p ≥ eps – условие выполнения цикла.

Определив все условия цикла, можно записать тело цикла.

Для того чтобы приблизиться к окончанию цикла, переменную i нужно увеличить: .

Чтобы сохранить инвариант, переменную p нужно изменить следующим образом:

.

Учитывая, что , получим второе соотношение: .

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

 

Выведем формулу для вычисления s:

 

 

Теперь можно записать цикл на языке С:

 

int main()

{

float eps = 0.001;

int i=0;

float s=1, p=1;

for(;p>eps;i++)

{

p=p/(i+1);

s=s+p;

}

printf("e=%f",s);

}

 

Для упрощения записи программы инициализация переменных цикла выполняется при их объявлении.

Задание к работе

На выполнение заданий вместе с защитой отводится три пары.

1) Посчитать сумму ряда, ограничивая число элементов ряда первым элементом, меньшим заданной величины eps. Определить реальную точность ряда.

2) Реализовать функцию, ограничивая число элементов ряда первым элементом, меньшим заданной величины eps. Рассчитать 10 значений из области сходимости.

Номер варианта в предыдущих двух заданиях определяется как остаток от деления номера по журналу на 15.

Наряду с типовыми заданиями предлагаются задания повышенной сложности.

3) Решить задачу с помощью цикла. Номер задания определяется остатком от деления варианта на восемь.

0. Найти в массиве символов наиболее длинную последовательность подряд идущих символов.

1. Найти в массиве целых чисел наиболее длинную возрастающую последовательность.

2. Найти в массиве символов количество последовательностей, содержащих три подряд одинаковых символа.

3. Найти в массиве символов среднюю длину последовательностей из двух и более символов.

4. Найти в массиве символов последовательность из n подряд одинаковых символов.

5. Найти в массиве чисел количество локальных максимумов (чисел, которые больше соседних элементов).

6. Найти в массиве чисел количество локальных минимумов (чисел, которые меньше соседних элементов).

7. Найти в массиве чисел количество чисел, больших предыдущих элементов массива.

Значение величины eps – 0,01.

Содержание отчета

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

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

1) Запишите в общем виде цикл в форме for.

2) Запишите в общем виде цикл в форме while.

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

4) Запишите цикл, находящий максимальный элемент массива целых чисел во всех формах записи циклов на языке С.

5) Что такое инвариант, предусловие и постусловие цикла?

6) Как правильно построить тело цикла?

7) Как связаны между собой постусловие, условие окончания и условие выполнения цикла?

 


Таблица 2.1

Варианты к первому заданию

 

Номер варианта Задание
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

Таблица 2.2

Варианты ко второму заданию

 

Номер варианта Функция и область сходимости Разложение в ряд
  ()
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

Таблица 2.3

Задачи повышенной сложности ко второму заданию

 

Номер варианта Функция и область сходимости Разложение в ряд
 
 
 
 
 
 
 
 
 
 

 

Ф о р м у л ы к з а д а ч а м п о в ы ш е н н о й с л о ж н о с т и

 

Числа Бернулли :

 

 

 

где .

Таблица 2.4

Таблица первых чисел Бернулли

 

                   

 

Числа Эйлера :

 

 

Таблица 2.5

Таблица первых чисел Эйлера

 

             
          2 702 765 199 360 981

 

Лабораторная работа 3
АЛГОРИТМЫ СОРТИРОВКИ

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

 

Date: 2016-07-25; view: 502; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию